2012-04-30 76 views
2

隨着只是一個普通的值,你會喜歡寫東西如何使用gridview控件的值填充文本框?

protected void GridView1_SelectedIndexChanged(Object sender, EventArgs e) 
{ 
    GridViewRow email = GridView1.SelectedRow; 
    txtbox.Text = email.Cells[5].Text; 

} 

不過,我想填充該文本框與在GridView的一個TextBox控件的值。我有一個行列表,取決於我選擇哪個文本框將使用該控件值填充。任何幫助/建議將不勝感激。

回答

1

我會建議使用此datakeys。這是一個很多比使用細胞指數更容易和更大量可靠:

<asp:GridView ID="Gridview1" runat="server" DataKeyNames="Column1, Column2" ...> 

然後,在後臺代碼就可以訪問這些值是這樣的:

protected void GridView1_SelectedIndexChanged(Object sender, EventArgs e) 
{ 
    GridViewRow email = GridView1.SelectedRow; 
    txtbox.Text = (string)GridView1.DataKeys[email.RowIndex]["Column1"];  
} 
+0

這是否適用於控件? – javasocute

+0

你是什麼意思?你是指數據鍵? –

+0

您是否試圖從'GridViewRow'中的控件填充值? –

1

請嘗試以下代碼。

TextBox tb = GridView1.SelectedRow.FindControl("textboxId") as TextBox; 
textbox.Text = tb.Text; 
+0

我得到一個「沒有設置對象實例的對象引用」。錯誤。但我覺得它非常接近。 – javasocute

+0

這是因爲tb必須爲空。添加If(tb!= null)textbox.Text = tb.Text; –

+0

如果你一直在使用SelectedIndexChanging,那麼代碼將是TextBox tb = GridView1.Rows [e.NewSelectedIndex] .FindControl(「textboxId」)作爲TextBox; –

1

試試這個:

GridView1.RowCommand += GridView1_RowCommand; 
private void GridView1_RowCommand(object sender, System.Web.UI.WebControls.GridViewCommandEventArgs e) 
{ 
     if (e.CommandName == "Select") 
     { 
      int index = Convert.ToInt32(Convert.ToString(e.CommandArgument)); 
      GridViewRow row = GridView1.Rows[index]; 
      this.NameTextBox.Text = Server.HtmlDecode(row.Cells[1].Text); 

     } 

} 
+0

這是VB代碼,請在C#中發佈,因爲他標記了C#。 –

+0

@ Kamran-感謝您的建議 – coder