DataGrid--->DG
string strID = "";
for (int i = 0; i < DG.Items.Count; i++)
{
CheckBoxList CheckBoxList1 = (CheckBoxList)DG.Items[i].FindControl("CheckBoxList1");
foreach (ListItem li in CheckBoxList1.Items)
{
if (li.Selected)
{
strID = strID + li.Value + ",";
}
}
}
Response.Write("<script>alert('" + strID + "');</script>");为什么就获取不到选中的值呢?
string strID = "";
for (int i = 0; i < DG.Items.Count; i++)
{
CheckBoxList CheckBoxList1 = (CheckBoxList)DG.Items[i].FindControl("CheckBoxList1");
foreach (ListItem li in CheckBoxList1.Items)
{
if (li.Selected)
{
strID = strID + li.Value + ",";
}
}
}
Response.Write("<script>alert('" + strID + "');</script>");为什么就获取不到选中的值呢?
{
BindData();
if (!Page.IsPostBack)
{
BindBoxList();
}
}
----------------protected void btn_Click(object sender, EventArgs e)
{
BindBoxList();
string strID = "";
....这样写的 应该怎么修改呢
{ BindData();
BindBoxList();
} 可以了
帮我看下
protected void DataGrid1_PageIndexChanged(object sender, DataGridPageChangedEventArgs e)
{
Hashtable table = new Hashtable();
for (int i = 0; i < DataGrid1.Items.Count; i++)
{
CheckBoxList CheckBoxList1 = (CheckBoxList)DataGrid1.Items[i].FindControl("CheckBoxList1");
ListItem li = (ListItem)CheckBoxList1.Items[i];
table.Add(i, li.Selected);
}
ViewState["CheckBox"] = table;
DataGrid1.CurrentPageIndex = e.NewPageIndex;
DataGrid1.DataBind();
}
为什么说超出索引范围》?
我这个就是网上说的 选中之后翻页还是选中的 所以用HashTable保存他,不知道是否正确
{
Hashtable table = new Hashtable();
for (int i = 0; i < DataGrid1.Items.Count; i++)
{
CheckBoxList CheckBoxList1 = (CheckBoxList)DataGrid1.Items[i].FindControl("CheckBoxList1");
ListItem li = (ListItem)CheckBoxList1.Items[i]; table.Add(i, li.Selected);
}
ViewState["CheckBox"] = table;
DataGrid1.CurrentPageIndex = e.NewPageIndex;
DataGrid1.DataBind();
} 难道你的dg的items数目一定和checkboxlist的items数目一样吗?怎么就不判断下各自的个数是否不相等呢?
怎么又拿这个去取checkboxlist的item?难道两个的数据源一样的?
{
if (!Page.IsPostBack)
{
BindData();
BindBoxList();
}
}
然后又用这个i去取checkboxlist里的item,你认为没问题?
假设dg的items是50个,在一个页面里显示的,那么你也认为在它的第30个item里的checkboxlist的item的数量一定会会大于或者等于30?只有这样才能不会报楼主的错误,否则就肯定报了。
现在在OnItemDataBound事件
for (int i = 0; i < DataGrid1.Items.Count; i++)
{
if (e.Item.ItemIndex >= 0 && ViewState["CheckBox"] != null)
{
Hashtable table = (Hashtable)ViewState["CheckBox"];
CheckBoxList CheckBoxList1 = (CheckBoxList)DataGrid1.Items[i].FindControl("CheckBoxList1");
ListItem li = (ListItem)CheckBoxList1.Items[0];
li.Selected = bool.Parse(table[i].ToString());
}
}有问题 超出索引范围 为什么