asp.net绑定查询输出到gridview

时间:2018-01-31 03:43:04

标签: asp.net gridview drop-down-menu

这适用于票务系统,其票证处于不同状态,如“打开,拒绝,关闭,已解决......”

在asp.net中我有一个gridview,在gridview中有文本框和下拉列表。 我可以从数据库中获取输出并在gridview中填充它,并且还会显示下拉列表中的内容。 如何将网格中下拉列表的数据绑定到查询输出的数据。如果票证已关闭,则应选择关闭,如果票证被拒绝,则应选择拒绝。

在onrowCommand中,我从另一个表中获取数据并填充到下拉列表中。这是完整的状态列表,如'oopen,rejected,closed,resolved ..'

2 个答案:

答案 0 :(得分:0)

您的问题缺少详细信息,例如您用于gridview的标记以及您对RowDataBound事件的代码。

所以,我提供了一个示例答案,您可以轻松适应您的情况。

我假设您有一个id为GridView1的gridview,其中包含以下ItemTemplate(其他列已被省略,因为它们不需要理解此方法)。

模板中应该有一个隐藏字段,以便存储行的当前状态;当你绑定gridview时,你应该得到一行名为Status的列。

示例加价

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" 
              OnRowDataBound="GridView1_OnRowDataBound">
<Columns>      
    <asp:TemplateField HeaderText = "Status">
        <ItemTemplate>
            <asp:HiddenField ID="hfStatus" runat="server" Value='<%# Eval("Status") %>' />
            <asp:DropDownList ID="ddlStatus" runat="server">
            </asp:DropDownList>
        </ItemTemplate>
    </asp:TemplateField>
</Columns>

然后在您绑定行的下拉列表的RowDataBound事件中,您需要获取隐藏字段hfStatus的值,然后使用此值设置所选的下拉项。

我假设有一个名为GetStatusDropDownListData的方法可以获取绑定下拉列表的数据。

示例RowDataBound事件

protected void GridView1_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        //Find the DropDownList in the Row
        DropDownList ddlStatus = (e.Row.FindControl("ddlStatus") as DropDownList);
        ddlStatus.DataSource = GetStatusDropDownListData();
        ddlStatus.DataTextField = "Status";
        ddlStatus.DataValueField = "Status";
        ddlStatus.DataBind();


        //Select the Status in DropDownList
        string currentStatus = (e.Row.FindControl("hfStatus") as HiddenField).Value;
        ddlStatus.Items.FindByValue(currentStatus).Selected = true;
    }
}

答案 1 :(得分:0)

我已经使用了这段代码,现在正在使用它:

在asp文件中:                                                              'Visible =“false”/&gt;                                                                                                                        

<。>在.cs文件中 string currentStatus =(e.Row.FindControl(“lblStatus”)as Label).Text; ddlStatus.Items.FindByValue(currentStatus).Selected = true;