我知道我要问的问题已经被其他人要求了,但这些答案对我的问题没有任何解决.
我有一个gridview包含2个BoundFields,2个ButtonFields和一个checkBox字段(这是一个TemplateField).
我还有一个datatable,填充数据库中的数据.
在aspx代码中,我创建了gridview,其中的字段设置了最后一个BoundField Visible = false.
在我的代码中,我添加了列,并将数据源绑定到我的datatable.
但是当我尝试从隐藏的边界读取数据时,该字段是空的.为什么我不能使用类似问题提到的解决方案的问题是因为人们假设数据被逐个填充,而不是通过将datatable绑定到gridview的数据源.
所以我的问题是:他们是从隐藏边界获取数据的一种方法,并且还保留通过将datatable绑定到gridview的数据源来添加数据的可能性?
如果是,是否可以从该领域获得价值?
附:我在visual studio 2010中使用asp.net/c#
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 = "↓",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中获取数据(从隐藏的边界中选择),因为它们可以编辑除了隐藏的边界之外的gridview,所以这是知道它的原始行的唯一方法.