下拉列表控件在铸造过程中返回GridView中的null



我在ASP.NET中非常陌生。我要做的是在编辑栅格时,为特定列提供一个下拉列表。

用户故事:用户将文本输入tenter eread textbox;返回匹配搜索条件的项目列表。活动状态列只有2个有效值;主动,无活跃。

我的问题如下:

  1. 下拉列表/文本在设计器中不反映在templateField中。当在模板场外时,设计师会检测到它。
  2. 在演员表中,价值以零为单位。
  3. 在数据源方法中,下拉列表(ddlactivity(返回null。

GridView (活动状态模板字段(

<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>

代码

protected void gvSearch_DataBound(object sender, GridViewRowEventArgs e)
{
    string code = termSearch.Text;
    ddlActivity.DataSource = termDAO.SearchByCode(code);
    DropDownList ddlActivityStatus = (DropDownList)e.Row.FindControl("ddlActivity");
    ddlActivityStatus.Items.Insert(0, new ListItem("--Select a Status--", "0"));
    ddlActivityStatus.Items.Add(new ListItem("Active", "STATUS.A"));
    ddlActivityStatus.Items.Add(new ListItem("Inactive", "STATUS.I"));
}

ddlActivityEditItemTemplate中。因此,您必须检查一下。

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");
        }
    }
}

最新更新