如何动态地将数据集的一个列值绑定到文本框?

时间:2014-11-25 11:47:03

标签: asp.net sql-server-2008

DataSet我有4列。在按钮单击中,我必须在文本框中显示整个一列值 动态。就像我们看到FB条评论一样,所有评论都会动态显示在textboxes中。 请帮我。

我对SW更新鲜了。>

ds = l2.messageshow(); //drag the data into ds

Convert.ToInt32(ds);
int linenum = 0;
foreach (int x in ds)
{   
}

当我使用上面的代码时,我收到以下错误:

  

foreach语句不能对类型数据集

的变量进行操作

2 个答案:

答案 0 :(得分:0)

尝试以下代码

ds=l2.messageshow();//drag the data into ds
Convert.ToInt32(ds);
int linenum = 0;
foreach (DataRow row in ds.Tables[0].Rows) //Change Here
{   
     //Your code
}

您无法将整个DataSet转换为int,以使号码号码使用DataRow来逐行获取DataSet行的数据

修改

如果您只希望DataSet中的一列在textbox中显示,请使用以下代码

if(ds.Tables[0].Rows.Count>0)
  {
    txtBox.Text=ds.Tables[0].Rows[0]["ColumnName"].ToString();
  }

我假设您的DataSet只有一个表,一个Row


如果要动态显示textboxes中的整列,可以动态创建文本框并为其分配数据集值,尝试下面的代码,

ds=l2.messageshow();//drag the data into ds

int linenum = ds.Tables[0].Rows.Count;

TextBox[] textbox= new TextBox[linenum]; //Modified line

for (int i = 0; i < linenum; i++)
{
  textbox[i] = new TextBox();
  textbox[i].ID = "textbox[" + i + "]";
  PlaceHolder1.Controls.Add(textbox[i]);
  textbox[i].Text=ds.Tables[0].Rows[i]["ColumnName"].ToString();
}

请记住动态控件将在回发后丢失以保留它,请遵循此示例how-to-retain-values-of-dynamically或此示例Dynamic Controls in Placeholder lossed after postback

答案 1 :(得分:0)

据我了解您的要求,您希望动态显示文本框中的整个列行。

我们假设您不知道数据集会有多少行。那么你创建的文本框动态地等于数据集行的数量呢?

让我们拥有一个包含一个TextBox的用户控件。

实施步骤:

  • 计算数据集的行数。
  • 将控件绑定到迭代计数等于数据集行的循环中的面板或容器。
  • 在每次迭代中,抓取列值并将其分配给TextBox,然后将控件停靠在控件容器中。

代码:

 foreach(var row in DataSet.Tables[0].Rows)
 {
  UserControl objCtrl = new UserControl();
  objCtrl.Controls["Your TextBox Id Here"].Text = row["ColumnName"].ToString();
  Panel.Controls.Add(objCtrl);
 }

如果问题仍然存在,请发表评论。