我在尝试找到比 Google 为这个问题提供的解决方案更清晰的解决方案时遇到了一些困难。我有以下代码抛出此错误,但我找到的解决方案说,“您是否尝试过 DataSourceID 而不是 DataSource?”没有说明应该将什么用于 DataSourceID 值。

...leading code left out for brevity's sake
<Columns>
      <asp:BoundColumn DataField="id" SortExpression="id" HeaderText="ID" ItemStyle-CssClass="dgCells"></asp:BoundColumn>
      <asp:BoundColumn DataField="first_name" SortExpression="first_name" HeaderText="First" ItemStyle-CssClass="dgCells"></asp:BoundColumn>
      <asp:BoundColumn DataField="last_name" SortExpression="last_name" HeaderText="Last" ItemStyle-CssClass="dgCells"></asp:BoundColumn>
      <asp:BoundColumn DataField="login_pw" HeaderText="Password" ItemStyle-CssClass="dgCells"></asp:BoundColumn>
      <asp:TemplateColumn HeaderText="Race">
        <ItemTemplate>
          <%# DataBinder.Eval(Container.DataItem, "race_name") %>
        </ItemTemplate>
        <EditItemTemplate>
          <asp:DropDownList runat="server" id="ddlRaces" DataValueField="race_id" DataTextField="race_name" >>>DataSourceID=""<<< />
        </EditItemTemplate>
      </asp:TemplateColumn>
      <asp:EditCommandColumn EditText="Edit" CancelText="Cancel" UpdateText="Ok"></asp:EditCommandColumn>
    </Columns>
...trailing code left out for brevity's sake

所以,我来找你们询问我应该在 DataSourceID=""值中插入什么。请详细一点,因为我仍然被这些东西弄湿了。

谢谢。 :)

最佳答案

DataSourceID 应设置为页面上从 DatasourceControl 继承的控件的 ID,例如 SqlDatasource 如果您想从 SQL 数据库填充网格

在 GridView 中绑定(bind) DropDown

protected void GV_RowDataBound(object sender, GridViewRowEventArgs e)
{
  if(e.Row.RowType == DataControlRowType.DataRow)
  {
    var ddl = (DropDownList)item.FindControl("ddlRaces");
    ddl.Datasource = GetRaces();
    ddl.DataBind();
  }
}

关于c# - 无法以声明方式设置“DataSource”属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6064276/

10-10 05:48