得到隐藏绑定列值? ASP.NET(Get value from hidden boundfie

2019-07-28 20:22发布

我知道我要问的其他人已经问的问题,但这些问题的答案是我的问题没有解决。

我有一个包含2个绑定列,2个ButtonFields一个gridview和复选框字段(这是一个TemplateField)。

我也有一个数据表,充满了数据库中的数据。

在ASPX代码创建我与田gridview的最后设置的绑定列Visible = false

在我隐藏,我添加了colums并绑定数据源到我的数据表。

但是,当我试图从隐藏的BoundField读取数据,该字段为空。 这个问题,为什么我不能用类似的问题中提到的解决方案,是因为人们认为得到的数据通过一个填入一枚,而不是通过结合一个DataTable到GridView的数据源。

所以我的问题是:是他们的一种方式,从隐藏的BoundField获取数据的同时保留由数据表绑定到GridView的数据源添加数据的可能性? 如果是的话,岂不是更多钞票,以获得从该字段中的值?

我使用asp.net/c#在Visual Studio 2010 PS

ASPX:

<asp:GridView ID="gvSelect" runat="server" AutoGenerateColumns="False" BorderStyle="None" onrowcommand="gvTestSelect_RowCommand">
    <Columns>
        <asp:TemplateField>
            <HeaderTemplate>
                <asp:CheckBox runat="server" ID="cbHeader" OnPreRender="cbHeader_PreRender" />
            </HeaderTemplate>
            <ItemTemplate>
                <asp:CheckBox runat="server" ID="cbItems" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="field" HeaderText="Veld" SortExpression="field" />
        <asp:ButtonField DataTextField="up" HeaderText="Omhoog" SortExpression="up" CommandName="up" Text="&uarr;" />
        <asp:ButtonField DataTextField="down" HeaderText="Omlaag" SortExpression="down" CommandName="down" Text="&darr;" />
        <asp:BoundField DataField="hidden" SortExpression="hidden" />
    </Columns>
</asp:GridView>

后面的代码(这里我填在GridView):

//create array list and fill it with all columns
Dictionary<string, string> dict = FillLists.getColumnsByTable(loader, ddlInfoTableI.SelectedItem.Value.ToString());

//loop trough dictionary
foreach (var val in dict)
{
    //create new dtSelect datarow
    DataRow dr = dtSelect.NewRow();

    //set row values for column values
    dr["select"] = false;
    dr["field"] = val.Value.ToString();
    dr["up"] = new ButtonField { CommandName = "up", Text = loader.LoadResourceString(1024), HeaderText = "&uarr;", ButtonType = ButtonType.Button, Visible = true };
    dr["down"] = new ButtonField { CommandName = "down", Text = loader.LoadResourceString(1025), HeaderText = "&darr;", ButtonType = ButtonType.Button, Visible = true };
    dr["hidden"] = val.Key.ToString();

    //add the datarow
    dtSelect.Rows.Add(dr);

    //set datatable session to datatable
    Session["dtSelect"] = dtSelect;

    //set datasource of the gridview to datatable
    gvSelect.DataSource = dtSelect;

    //bind data to gridview
    gvSelect.DataBind();
}

所以现在我需要在GridView(escpecialy从隐藏的BoundField)获得的数据,因为他们可以只是隐藏绑定列编辑gridview的,所以这是要知道这是哪个原始行的唯一途径。

Answer 1:

添加你需要得到该列的数据项:

<asp:GridView ID="GridView1" runat="server" DataKeyNames="hidden" ...>

一旦你添加了datakey,您可以用行索引访问它的价值:

var rowIndex = 0;
var hiddenValue = (string)GridView1.DataKeys[rowIndex]["hidden"];


Answer 2:

另一种选择是保持绑定列(或任何其它类型的列)中可见的标记(删除可见=假 ),并使用RowDataBound事件隐藏列:

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
    e.Row.Cells[COLUMN_USERID].Visible = false;
}


Answer 3:

您可以使用此代码。 我测试了它。

TextBox1.Text = GridView1.DataKeys[e.NewSelectedIndex].Value.ToString();



文章来源: Get value from hidden boundfield? ASP.NET