gridview中所有列均为动态增加, 其中有一列为动态的templateField 我在itemtemplate中动态添加的是checkbox
用于实现全选功能, 但是 现在的问题是 我怎样去取得这些被选定的checkbox? 我的checkbox有和id绑定 主要是想要得到这些id 但是 我没办法取得选定的checkbox 我有试过findcontrol 但是很遗憾 不论我条件怎么写 它根本没办法取得checkbox 不知道大家有什么建议 帮我想想办法 。先谢谢大家了~!
(ps:由于保密,数据库相关表结构信息我根本不知道, 所以 不得已gridview中所有的列必须动态新增)
用于实现全选功能, 但是 现在的问题是 我怎样去取得这些被选定的checkbox? 我的checkbox有和id绑定 主要是想要得到这些id 但是 我没办法取得选定的checkbox 我有试过findcontrol 但是很遗憾 不论我条件怎么写 它根本没办法取得checkbox 不知道大家有什么建议 帮我想想办法 。先谢谢大家了~!
(ps:由于保密,数据库相关表结构信息我根本不知道, 所以 不得已gridview中所有的列必须动态新增)
{
RadioButton rb = ddlyw.Items[i].FindControl("quancheng") as RadioButton;
if (rb.Checked)
{
private DataControlRowType templateType;
private string columnName;
private string cId;
public GridViewTextTemplate(DataControlRowType type, string colname, string controlId)
{
templateType = type;
columnName = colname;
cId = controlId;
}
public void InstantiateIn(System.Web.UI.Control container)
{
switch (templateType)
{
case DataControlRowType.Header:
myHeadLiteral.ID = cId;
myHeadLiteral.Text = "<B>" + columnName + "</B>";
container.Controls.Add(myHeadLiteral);
break;
case DataControlRowType.DataRow:
TextBox myTextBox = new TextBox();
myTextBox.ID = cId;
myTextBox.DataBinding += new EventHandler(this.TextBoxDataBinding);
container.Controls.Add(myTextBox);
break;
default:
break;
} }
private void TextBoxDataBinding(Object sender, EventArgs e)
{
TextBox myTextBox = (TextBox)sender;
GridViewRow row = (GridViewRow)myTextBox.NamingContainer;
myTextBox.Text = System.Web.UI.DataBinder.Eval(row.DataItem, columnName).ToString();
}
}http://topic.csdn.net/u/20090902/15/41efb8d7-6134-465b-84cc-9ac88fb2e0c8.html
for (int i = 0; i < GridView1.Rows.Count; i++)
{
checkbox ck = GridView1.Rows[i].FindControl("checkbox的id");
if (ck.Checked)
//执行语句
}
CheckBox ck=GridViewName.rows[rowIndex].findControl("ckName") as CheckBox;
然后再取值就可以了
判断一下他的装太
if(ck[i].checked==checked)
取值
你可能没看懂我的问题, 不过 还是谢谢了·! 我现在不是要添加 而是要将checkbox取出来。
不过,, 还是谢谢。
我就是想知道怎么取 因为是全选的内容 所以 根本没办法触法gridview控件的任何事件 而是在gridview外进行edit 所以要取得选定的checkbox
可以这样写啊
public void GetSelect(){
foreach (GridViewRow gvr in GridView1)
{
CheckBox cb = gvr.FindControl("ckName") as CheckBox;
if(cb.Checked){
//做出相应的操作
}
}
}
先谢谢了~! 不过。。要是FindControl方法能用的话我就不用愁了, 关键是FindControl方法需要一个ID 而我的控件是用与二楼差不多的方法写的 在界面是动态新增的 这样的话 所有的checkbox的ID我都根本不知道 又怎么用这个方法呢~! 而且 我也又试过用遍历gridview 但是 遍历结果根本找不到checkbox 我主要是想知道 到底该怎么取到选定的checkbox的ID
例如
TextBox text=new TextBox();
text.ID=""
这样你不是就可以设定他的ID了吗
private static string RetrieveCheckValue(GridView GridViewMain, string RowCheckBoxName, string RowHiddenInputName)
{
string a = ""; foreach (GridViewRow GridViewMainItem in GridViewMain.Rows)
{
HtmlInputCheckBox chk = (HtmlInputCheckBox)(GridViewMainItem.FindControl(RowCheckBoxName));
HtmlInputHidden hiInput = (HtmlInputHidden)(GridViewMainItem.FindControl(RowHiddenInputName));
if (chk.Checked == true)
{
a += "," + hiInput.Value;
}
} if (a != "")
{
a = a.Substring(1, a.Length - 1);
}
return a;
}
//修改
protected void ImageButton6_Click(object sender, ImageClickEventArgs e)
{
if (RetrieveCheckValue(GridView1, "Checkbox1", "Hidden1") != "")
{
string[] xuanze = RetrieveCheckValue(GridView1, "Checkbox1", "Hidden1").Split(',');
if (xuanze.Length == 1)
{
this.HiddenField1.Value = xuanze[0];
BindXuanZe(xuanze[0]);//弹出层绑定的信息
}
else
{
this.HiddenField1.Value = "0";
Jscript.AlertAndRedirect("每次只能修改一条信息!", "FH_BASE.aspx"); }
}
else
{
this.HiddenField1.Value = "0";
}
}
试试
不过, 还是谢谢。。