如何从gridview中用程序创建的文本框中获取和保存值
本文关键字:获取 文本 保存 创建 gridview 程序 | 更新日期: 2023-09-27 18:29:23
我有gridview
,它包含在后面的代码中创建的文本框
这是页面加载:
protected void Page_Load(object sender, EventArgs e)
{
//my page load is empty;
}
这是按钮的代码,选择下拉菜单,然后单击"Pilih"显示包含文本框的网格视图:
public void btnPilihKrit_Click(object sender, EventArgs e)
{
DataTable dtsubKrit = new DataTable();
dtsubKrit = subkritMgr.getListSubKriteriaByIDKriteria(int.Parse(ddlKrit.SelectedValue));
NbDtSubKritRow = dtsubKrit.Rows.Count;
dtGvSubKrit.Columns.Add(new DataColumn("SUBKRITERIA", typeof(string)));
foreach (DataRow row in dtsubKrit.Rows)
{
dtGvSubKrit.Columns.Add(new DataColumn(row["SUBKRITERIA"].ToString(), typeof(string)));
}
DataRow dr = null;
foreach (DataRow row in dtsubKrit.Rows)
{
dr = dtGvSubKrit.NewRow();
dr["SUBKRITERIA"] = row["SUBKRITERIA"];
dtGvSubKrit.Rows.Add(dr);
}
gvKrit2.DataSource = dtGvSubKrit;
gvKrit2.DataBind();
ViewState["CurrentTable"] = dtGvSubKrit;
}
这是gridview的rowdatabound:中的代码
protected void gvKrit2_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
for (int i = 1; i <= NbDtSubKritRow; i++)
{
TextBox txtNilai = new TextBox();
txtNilai.ID = "txtNilai" + e.Row.RowIndex.ToString() + i.ToString();
if (i == e.Row.RowIndex + 1)
{
txtNilai.Text = "1";
}
else
{
txtNilai.Text = "";
}
if (i <= e.Row.RowIndex + 1)
{
txtNilai.Enabled = false;
}
e.Row.Cells[i].Controls.Add(txtNilai);
}
}
}
那么这是从网格视图中的文本框中获取值的代码:
protected void btnProsesPerbBerpsg_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in gvKrit2.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
TextBox textBox = row.FindControl("txtNilai") as TextBox;
string tb = textBox.Text;
// do somthing with the text box textBox
}
}
}
这里有一些例子:
- 屏幕截图1,点击按钮Pilih并选择下拉菜单后,将显示带有文本框的网格视图,我将用自己的值填充文本框
- 屏幕截图2,点击"Proses Perbandingan Berpasangan"按钮从网格视图中获取值
有人能帮我吗?
我已经尝试了很多类似的方法
TextBox box1 = (TextBox)(gvKrit2.Rows[rowIndex].Cells[1].FindControl("txtNilai")) as TextBox;
但在findcontrol
中找不到文本框。似乎gridview
在返回后没有再次创建。
我已经搜索了一些文献,我必须重新创建gridview
或在gridview
中创建rowcreated事件,但现在我不知道该怎么做。
当您在RowDataBound上创建ID为的文本框时
txtNilai.ID = "txtNilai" + e.Row.RowIndex.ToString() + i.ToString();
所以你需要找到ID:
string txtid = "txtNilai"+e.Row.RowIndex.ToString()+i.ToString(); // as per given inRowdataBound , so make sure to define i value.
TextBox textBox = row.FindControl(txtid) as TextBox;