2012-04-30 1 views
2

С помощью всего регулярного значения можно было бы написать что-то вродеКак заполнить текстовое поле значением элемента управления gridview?

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

} 

Однако, я хочу, чтобы заполнить это текстовое поле со значением, которое является элементом управления текстового поля в GridView. У меня есть список строк и в зависимости от того, какая строка я выбираю, что текстовое поле заполняет это значение управления. Любая помощь/совет будут очень признательны.

ответ

1

Я бы предложил использовать для этого ключевых полей. Это намного проще и намного надежнее, чем с помощью индекса ячейки:

<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 должен быть нулевым. add 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

0

Вы можете найти лучший код здесь о том, как заполнить gridview значениями текстового поля вашей формы. http://sharepoint-2010-world.blogspot.in/2013/10/populating-grid-with-form-values.html

+0

Пожалуйста, попробуйте прочитать это http://stackoverflow.com/help/deleted-answers, чтобы узнать больше о том, как ** не ** ответить. А именно: «Ответы, которые принципиально не отвечают на вопрос»: ** едва ли больше, чем ссылка на внешний сайт ** –