【问题标题】:asp.net binding query output into dropdown list in gridviewasp.net 绑定查询输出到 gridview 的下拉列表中
【发布时间】:2018-07-10 02:05:33
【问题描述】:

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

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

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

【问题讨论】:

  • 你绑定gridview的时候得到ticket的状态了吗?
  • 不,我正在获取该特定工单的状态,而不是下拉列表中的所有值
  • 查看我的答案,您需要根据此调整您的代码。
  • 如果您在绑定gridview 时没有获得状态,那么您必须从数据库中获取当前行在RowDataBound 事件中的状态。否则,您将永远无法实现您的要求。

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


【解决方案1】:

您的问题缺少详细信息,例如您为 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;
    }
}

【讨论】:

  • 你下面的代码使它工作正常 //Select the Status in DropDownList string currentStatus = (e.Row.FindControl("hfStatus") as HiddenField).Value; ddlStatus.Items.FindByValue(currentStatus).Selected = true;
【解决方案2】:

我已经使用了这段代码并且它现在可以工作了:

在 asp 文件中: ' 可见 = "假" />

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    • 2011-11-11
    • 1970-01-01
    相关资源
    最近更新 更多