关于网友提出的“GridView自适应列宽 GridView 遍历 TextBox的问题”问题疑问,本网通过在网上对“GridView自适应列宽 GridView 遍历 TextBox的问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题:GridView自适应列宽 GridView 遍历 TextBox的问题
描述: 我的GridView列是动态添加,中间包括一个TextBox的列,如下:
public class GridViewTemplate : ITemplate
{
private string templateType;
private string columnName;
public GridViewTemplate(string type, string colname)
{
templateType = type;
columnName = colname;
}
public void InstantiateIn(System.Web.UI.Control container)
{
switch(templateType)
{
case "DDL":
DropDownList DDL = new DropDownList();
DDL.ID = "DDL";
string sqlstr = "select codename from hr_code_" + columnName + " where isuse=1 order by codeid ";
DataSet myds = do_database.Query(sqlstr);
DDL.Items.Add("");
for (int i = 0; i <= myds.Tables[0].Rows.Count - 1; i++)
DDL.Items.Add(myds.Tables[0].Rows[i]["codename"].ToString());
container.Controls.Add(DDL);
break;
case "TextBox":
TextBox TB_value = new TextBox();
TB_value.ID = "TB_value";
container.Controls.Add(TB_value);
break;
case "Button":
Button Btn = new Button();
Btn.ID = "Btn_OK";
Btn.Text = "保存";
Btn.Width = 180;
Btn.ForeColor = System.Drawing.Color.White;
Btn.BackColor = System.Drawing.Color.BlueViolet;
container.Controls.Add(Btn);
break;
default:
break;
}
}
}
绑定列:
GridView1.Columns.Clear();
System.Web.UI.WebControls.BoundField field;
field = new BoundField();
field.DataField = "empid";
field.HeaderText = "员工序号";
field.ReadOnly = true;
GridView1.Columns.Add(field);
field = new BoundField();
field.DataField = "ygbh";
field.HeaderText = "工号";
field.ReadOnly = true;
GridView1.Columns.Add(field);
field = new BoundField();
field.DataField = "empname";
field.HeaderText = "姓名";
field.ReadOnly = true;
GridView1.Columns.Add(field);
field = new BoundField();
field.DataField = "department";
field.HeaderText = "部门";
field.ReadOnly = true;
GridView1.Columns.Add(field);
field = new BoundField();
field.DataField = "c_memo";
field.HeaderText = "修改字段";
field.ReadOnly = true;
GridView1.Columns.Add(field);
field = new BoundField();
field.DataField = "c_old_value";
field.HeaderText = "原始值";
field.ReadOnly = true;
GridView1.Columns.Add(field);
if (code_flag == 0)
{
TemplateField myField = new TemplateField();
myField.ItemTemplate = new GridViewTemplate("TextBox", c_name);
GridView1.Columns.Add(myField);
}
if (code_flag == 1)
{
TemplateField myField = new TemplateField();
myField.ItemTemplate = new GridViewTemplate("DDL", c_name);
GridView1.Columns.Add(myField);
}
string sqlstr = "select empid,ygbh,empname,department,c_memo,c_old_value from hr_modify_detail_info where department='" + deptname + "' and c_memo='" + c_memo + "' order by empid";
DataSet myds = do_database.Query(sqlstr);
GridView1.DataSource = myds.Tables[0].DefaultView;
GridView1.DataBind();
我的页面中有一个Button的按钮,我想点击这个按钮的时候,更新数据,其中包括要获取GridView里面的textbox的值,我的做法如下:
for (int i = 0; i <= rownum - 1; i++)
{
empid = Convert.ToInt32(GridView1.Rows[i].Cells[0].Text);
c_memo = GridView1.Rows[i].Cells[4].Text;
if (code_flag == 1)
c_new_value = ((DropDownList)GridView1.Rows[i].FindControl("DDL")).Text;
if (code_flag == 0)
c_new_value = ((TextBox)GridView1.Rows[i].FindControl("TB_value")).Text;
sqlstr = " update hr_modify_detail_info set c_new_value ='" + c_new_value + "' where empid=" + empid + " and c_memo='" + c_memo + "'";
do_database.ExecuteSql(sqlstr);
}
但是程序运行的时候,提示找不到textbox对象,请问各位高手,谢谢!
以上介绍了“GridView自适应列宽 GridView 遍历 TextBox的问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3111072.html