DropDownList控件在转换期间在GridView中返回null

时间:2017-04-21 18:03:20

标签: c# asp.net gridview drop-down-menu controls

我对asp.net的开发很新。 我正在尝试做的是编辑一个gridrow,为特定列提供一个下拉列表。

用户故事:用户在termSearch文本框中输入文字;返回与搜索条件匹配的项目列表。 “活动状态”列只有2个有效值;活跃,不活跃。

我的问题如下:

  1. DropDownList / Text如果在TemplateField中,则不会反映在设计器中。当在TemplateField之外时,设计师会检测到它。
  2. 在演员表中,值将返回null。
  3. 在DataSource方法期间,下拉列表(ddlActivity)返回null。
  4. GridView (活动状态模板字段)

    CreateFileAsync

    代码背后

    <Columns>
        <asp:CommandField ShowEditButton="true" />
    
        <asp:BoundField DataField="CODE" ReadOnly="True" HeaderText="Term Code" HtmlEncode="False" Visible="true">
            <ItemStyle Width="24%" />
        </asp:BoundField>
    
        <asp:BoundField DataField="DISPLAYLABEL" HeaderText="Label" HtmlEncode="False" Visible="true">
            <ItemStyle Width="24%" />
        </asp:BoundField>
    
        <asp:TemplateField HeaderText="Activity Status">
            <ItemTemplate>
                <asp:TextBox ID="lblActivity" runat="server" Text='<%#Bind("STATUS_FK") %>'></asp:TextBox>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:DropDownList ID="ddlActivity" runat="server" SelectedValue='<%# Bind("STATUS_FK") %>'>
                </asp:DropDownList>
            </EditItemTemplate>
        </asp:TemplateField>
    
        <asp:BoundField DataField="STRINGATTRIBUTE" HeaderText="String Attribute" HtmlEncode="False" Visible="true">
            <ItemStyle Width="24%" />
        </asp:BoundField>
        <asp:BoundField DataField="LONGLABEL" HeaderText="Long Label" HtmlEncode="False" Visible="true">
            <ItemStyle Width="24%" />
        </asp:BoundField>
    </Columns>
    

1 个答案:

答案 0 :(得分:1)

ddlActivity位于EditItemTemplate。所以你必须检查一下。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if ((e.Row.RowState & DataControlRowState.Edit) > 0)
        {
            DropDownList ddlActivityStatus = (DropDownList)e.Row.FindControl("ddlActivity");
        }
    }
}