【问题标题】:GridView dynamic column bindingGridView 动态列绑定
【发布时间】:2013-09-10 12:31:45
【问题描述】:

我有一个网格视图,标题中有一个下拉列表,用于选择应该显示我的数据源的哪一列。

平均售价:

    <asp:GridView ID="gvProperties" runat="server" AutoGenerateColumns="False" 
        DataKeyNames="part_id" DataSourceID="edsPartProperties" 
        AllowSorting="True">
        <Columns>
            <asp:BoundField DataField="propertyname" HeaderText="propertyname" 
                SortExpression="propertyname" />
            <asp:BoundField DataField="value_num" HeaderText="value_num" 
                SortExpression="value_num" />
            <asp:BoundField DataField="value_char" HeaderText="value_char" 
                SortExpression="value_char" />
            <asp:BoundField DataField="symbol" HeaderText="symbol" 
                SortExpression="symbol" />
            <asp:TemplateField>
                <HeaderTemplate>
                    <asp:DropDownList ID="ddlGvColumn" runat="server" 
                        onselectedindexchanged="ddlGvColumn_SelectedIndexChanged" 
                        AutoPostBack="true" onprerender="ddlGvColumn_PreRender">
                    <asp:ListItem>Value</asp:ListItem>
                    <asp:ListItem>Identifier</asp:ListItem>
                    </asp:DropDownList>
                </HeaderTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label1" runat="server" 
                        Text='<%# Eval(((DropDownList)(this.gvProperties.HeaderRow.FindControl("ddlGvColumn"))).SelectedValue) %>'></asp:Label>
                </ItemTemplate>

            </asp:TemplateField>
        </Columns>
    </asp:GridView>

第一次加载时效果很好! 一旦我从下拉列表中选择了另一个项目,gridview 就会再次加载第一个项目。 所以我决定存储 ViewState 并在 onprerender 重新设置下拉列表。所以现在下拉列表显示了正确的选择项,但是 itemtamplate 中的标签没有绑定到它!

这里是 2 个事件的代码:

protected void ddlGvColumn_SelectedIndexChanged(object sender, EventArgs e) {
    DropDownList ddlProps = (DropDownList)sender;
    ViewState["selVal"] = ddlProps.SelectedValue;

}
protected void ddlGvColumn_PreRender(object sender, EventArgs e) {
    DropDownList ddlProps = (DropDownList)sender;
    foreach (ListItem li in ddlProps.Items) {
        if (li.Value.Equals(ViewState["selVal"])) {
            li.Selected = true;
            return;
        }
    }
}

如何将列中的项目绑定到标题中的选定值? e: 在 SelectedIndexChanged 方法中在 gridview 上触发数据绑定也不起作用

【问题讨论】:

  • 你的页面加载块是什么样的?
  • 我的 page_load 块是空的
  • 将列项绑定到gridview工作之外的下拉列表的值。但这不是我真正想做的!

标签: c# asp.net gridview


【解决方案1】:

您为什么不创建一个global variable 来保存您从下拉列表中选择的值。将global variable 的初始化放在SelectedIndexChanged 中。然后您可以将global variable 的值放在一个条件中以设置下拉列表的选定项。您可以将此条件放在PreRender 事件中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多