1

我的 C# Web 应用程序中有一个 GridView 控件。在我的网格视图中,我有一个名为 Select, 的 ButtonField ID="btnSelect"。基本上,在我的 GridView 控件中,我有一个客户的名字、姓氏、地址和电话号码,对于相应的信息,我有文本框。当我在 gridview 中点击/触发选择按钮时,我希望客户端名称进入文本框,并且我已经成功地做到了,但是在我的应用程序中,您最多可以选择 6 个客户端。有没有比我这样做更好的方法?代码如下:

 void GridView1_RowCommand(Object sender, GridViewCommandEventArgs e)
 {
  int index = Convert.ToInt32(e.CommandArgument);
  GridViewRow row = GridView1.Rows[index];


  if(string.IsNullOrEmpty(txtName1.Text) && string.IsNullOrEmpty(txtLName1.Text) &&
     string.IsNullOrEmpty(txtAddr1.Text) && string.IsNullOrEmpty(txtPhone1.Text))
    {
      txtName1.Text=Server.HtmlDecode(row.Cells[1].Text);
      txtLName1.Text=Server.HtmlDecode(row.Cells[2].Text);
      txtAddr1.Text=Server.HtmlDecode(row.Cells[3].Text);
      txtPhone1.Text=Server.HtmlDecode(row.Cells[4].Text);

    }
  //If I hit another select button then this will load the sencond set of txtboxes
    if(string.IsNullOrEmpty(txtName2.Text) && string.IsNullOrEmpty(txtLName2.Text) &&
     string.IsNullOrEmpty(txtAddr2.Text) && string.IsNullOrEmpty(txtPhone2.Text))
    {
      txtName2.Text=Server.HtmlDecode(row.Cells[1].Text);
      txtLName2.Text=Server.HtmlDecode(row.Cells[2].Text);
      txtAddr2.Text=Server.HtmlDecode(row.Cells[3].Text);
      txtPhone2.Text=Server.HtmlDecode(row.Cells[4].Text);

    }
 //The thrid time will load the third button and so on until I fill each txtbox if I choose.
}

有没有更好的方法来编写这个代码,如果每次我点击行命令中的选择按钮,我就不必把所有那些复杂的 if 语句放在那里?是否有像 foreach 循环可以处理这个任何指导将不胜感激!

4

2 回答 2

0

我建议查看 FindControl 方法。

您可以使用以下内容:

TextBox txtName = FindControl(string.Format("txtName{0}", index) as TextBox;
if(txtName != null)
{
txtName.Text = row.Cells[1].Text;
}
于 2012-05-07T11:21:59.150 回答
0

优化版本在这里

void GridView1_RowCommand(Object sender, GridViewCommandEventArgs e) {
    GridViewRow row = ((Control) sender).NamingContainer as GridViewRow;
    PopulateClients(txtName1, txtLName1, txtAddr1, txtPhone1, row);

    //If I hit another select button then this will load the sencond set of txtboxes
    PopulateClients(txtName2, txtLName2, txtAddr2, txtPhone2, row);
    //The thrid time will load the third button and so on until I fill each txtbox if I choose.
}

private void PopulateClients(TextBox t1, TextBox t2, TextBox t3, TextBox t4, GridViewRow r) {
    if (string.IsNullOrEmpty(t1.Text) && string.IsNullOrEmpty(t2.Text) && string.IsNullOrEmpty(t3.Text) && string.IsNullOrEmpty(t4.Text)) {
        t1.Text = Server.HtmlDecode(r.Cells[1].Text);
        t2.Text = Server.HtmlDecode(r.Cells[2].Text);
        t3.Text = Server.HtmlDecode(r.Cells[3].Text);
        t4.Text = Server.HtmlDecode(r.Cells[4].Text);    
    }
}​
于 2012-05-07T11:47:28.583 回答