2017-09-14 21 views
0

我有这个Telerik的radgrid控件我如何绑定为一个asp下拉列表中的数据,Telerik的GridTemplateColumn

 <telerik:RadGrid ID="gvMembers" runat="server" 
     AutoGenerateColumns="false" 
     OnNeedDataSource="gvMembers_NeedDataSource" 
     AllowSorting="true" 
     AllowPaging="true" 
     PageSize="10" 
     AllowAutomaticUpdates="true" 
     AllowAutomaticInserts="true" 
     AllowAutomaticDeletes="true" 
     OnItemCreated="gvMembers_ItemCreated" 
     OnItemInserted="gvMembers_ItemInserted" 
     OnPreRender="gvMembers_PreRender" 
     OnInsertCommand="gvMembers_InsertCommand" 
     OnItemDataBound="gvMembers_ItemDataBound" 
     OnUpdateCommand="gvMembers_UpdateCommand" 
     OnDeleteCommand="gvMembers_DeleteCommand" 

     > 
     <HeaderStyle CssClass="GridHeader" /> 
     <PagerStyle Mode="NextPrevNumericAndAdvanced" /> 
     <MasterTableView AutoGenerateColumns="false" DataKeyNames="UserID" CommandItemDisplay="Top" InsertItemPageIndexAction="ShowItemOnCurrentPage"> 
      <Columns> 
       <telerik:GridEditCommandColumn></telerik:GridEditCommandColumn> 
       <telerik:GridBoundColumn DataField="UserID" HeaderText="UserID" ReadOnly="true" UniqueName=""></telerik:GridBoundColumn> 
       <telerik:GridCheckBoxColumn DataField="Valid" HeaderText="Active" SortExpression="Valid" UniqueName="valid"></telerik:GridCheckBoxColumn> 
       <telerik:GridBoundColumn DataField="FirstName" HeaderText="First Name" SortExpression="FirstName" UniqueName="firstname"></telerik:GridBoundColumn> 
       <telerik:GridBoundColumn DataField="FirstName" HeaderText="Last Name" SortExpression="LastName" UniqueName="lastname"></telerik:GridBoundColumn> 
       <telerik:GridBoundColumn DataField="UserName" HeaderText="User Name" SortExpression="UserName" UniqueName="username"></telerik:GridBoundColumn> 
       <telerik:GridBoundColumn DataField="EmailAddress" HeaderText="Email" SortExpression="EmailAddress" UniqueName="email"></telerik:GridBoundColumn> 

       <telerik:GridTemplateColumn UniqueName="TemplateColumn" HeaderText="Role"> 
        <ItemTemplate> 
         <asp:Label ID="Label1" runat="server" 
          Text='<%# DataBinder.Eval(Container.DataItem, "Role") %>'> 
         </asp:Label> 
        </ItemTemplate> 
        <EditItemTemplate> 
         <asp:DropDownList ID="ddlRole" runat="server" DataTextField="Role1" DataValueField="RoleID"></asp:DropDownList> 
        </EditItemTemplate> 
       </telerik:GridTemplateColumn> 
       <telerik:GridButtonColumn ConfirmText="Delete this Member?" ConfirmDialogType="RadWindow" 
        ConfirmTitle="Delete" ButtonType="PushButton" Text="Delete" CommandName="Delete" /> 
      </Columns> 
     </MasterTableView> 
    </telerik:RadGrid> 

正如你可以看到我有一个ASP的DropDownList为用户角色。我现在需要将数据库角色表值绑定到此下拉列表。

我已经使用此代码来完成这个尝试:

DropDownList ddl = (DropDownList)e.Item.FindControl("ddlRole"); 
ddl.SelectedValue = (string)DataBinder.Eval(e.Item.DataItem, "Role1").ToString(); 

,但我得到第二行空异常错误。当我检查DropDownList ddl的值时,它显示为空。它看起来没有找到ID = ddlRole的DropDownList。任何有关这个问题可能的建议?

回答

1

我想出了答案,这里是我使用的代码。

protected void gvMembers_ItemDataBound(object sender, GridItemEventArgs e) 
    { 

     if (e.Item is GridEditableItem && e.Item.IsInEditMode) 
     { 
      var roles = (from c in DbContext.roles 
         select new { c.Role1, c.RoleID }).ToList(); 
      GridEditableItem item = e.Item as GridEditableItem; 
      // access/modify the edit item template settings here 
      DropDownList list = item.FindControl("List1") as DropDownList; 
      list.DataSource = roles; 
      list.DataBind(); 
     } 

    } 
相关问题