我知道我要问的其他人已经问的问题,但这些问题的答案是我的问题没有解决。
我有一个包含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="↑" />
<asp:ButtonField DataTextField="down" HeaderText="Omlaag" SortExpression="down" CommandName="down" Text="↓" />
<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 = "↑", ButtonType = ButtonType.Button, Visible = true };
dr["down"] = new ButtonField { CommandName = "down", Text = loader.LoadResourceString(1025), HeaderText = "↓", 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的,所以这是要知道这是哪个原始行的唯一途径。