C# 如何从asp.net网格视图填充列表?
我有一个网格视图,我想通过检查支票簿来更新将要选择的所有行。首先,我希望将所有选定的行放入一个列表中。我不知道怎么做。我知道如何从列表中填充网格。 我的网格视图是C# 如何从asp.net网格视图填充列表?,c#,.net,list,gridview,C#,.net,List,Gridview,我有一个网格视图,我想通过检查支票簿来更新将要选择的所有行。首先,我希望将所有选定的行放入一个列表中。我不知道怎么做。我知道如何从列表中填充网格。 我的网格视图是 <asp:GridView runat="server" ID="GridForResult" Visible="true" ShowHeader="false" AutoGenerateColumns="false"> <Columns>
<asp:GridView runat="server" ID="GridForResult"
Visible="true"
ShowHeader="false"
AutoGenerateColumns="false">
<Columns>
<asp:TemplateField ItemStyle-Width="120px" ItemStyle-Height="22px">
<ItemTemplate>
<%#Eval( "TestRoll")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-Width="150px" ItemStyle-Height="22px">
<ItemTemplate>
<%#Eval( "Name")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-Width="80px" ItemStyle-Height="22px">
<ItemTemplate>
<%#Eval( "Program")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-Width="80px" ItemStyle-Height="22px">
<ItemTemplate>
<asp:CheckBox ID="chkSelected" runat="server" Text="Selected" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
我的另一个问题是如何从gridview中仅获取所选(复选框)行?我将使复选框列成为TemplateColumn。然后在回发时,需要迭代GridView行集合并执行以下操作:
foreach(GridViewRow row in gridViewId)
{
CheckBox chk = row.FindControl("CheckBoxId") as CheckBox;//use chk value as needed
}
如果您不分页网格,并且希望在回发时保持选中的值,那么这是非常简单的。 在GridView标记上,设置
DataKeyNames=“{your primary key}”
代码隐藏
List<string> primaryKeys = new List<string>();
foreach(GridViewRow row in GridForResult.Rows)
{
CheckBox check = row.FindControl("chkSelected") as CheckBox;
if(check.Checked)
{
primaryKeys.Add(GridForResult.DataKeys[row.RowIndex].Value.ToString());
}
}
List primaryKeys=new List();
foreach(GridForResult.Rows中的GridViewRow行)
{
CheckBox check=行。FindControl(“chkSelected”)作为复选框;
如果(勾选,勾选)
{
添加(GridForResult.DataKeys[row.RowIndex].Value.ToString());
}
}
列表现在将保存所有选中的主键。声明一个字符串类型的集合,
declare a collection of say string type,
List<string> objList = new List<string>();
foreach(GridViewRow row in gridViewId)
{
CheckBox chk = row.FindControl("CheckBoxId") as CheckBox;
if(chk.IsChecked)
{
objList.Add(row["id"].Text);
}
}
save this list in session,
Session["checkedList"] = objList;
when you want to retireve,use,
objList = List<string>(Session["checkedList"]);
列表对象列表=新列表();
foreach(gridViewId中的GridViewRow行)
{
复选框chk=行。FindControl(“CheckBoxId”)作为复选框;
如果(已检查通道)
{
objList.Add(行[“id”].Text);
}
}
在会话中保存此列表,
会话[“检查列表”]=对象列表;
当你想退休时,使用,
objList=List(会话[“检查列表]);
列表对象列表=新列表();
foreach(GridViewRow gvrow在GridView1.Rows中)
{
复选框CheckBox1=(复选框)gvrow.FindControl(“CheckBox1”);
如果(复选框1.选中)
{
objList.Add(行[“id”].Text);
}
}
这里,TestRoll是我的主键。但是当我像primaryKeys.Add(GridForResult.DataKeys[“TestRoll”].Value.ToString()那样编写时;这给了我一个错误:参数类型“string”不能分配给参数类型int,你能解决这个问题吗?这个问题可以通过将一个整数作为数据键的索引来解决,即primaryKeys.Add(GridForResult.Datakeys[index].Value.ToString());其中index是一个int类型变量。
List<string> objList = new List<string>();
foreach (GridViewRow gvrow in GridView1.Rows)
{
CheckBox CheckBox1 = (CheckBox)gvrow.FindControl("CheckBox1");
if (CheckBox1.Checked)
{
objList.Add(row["id"].Text);
}
}