2016-10-07 4 views
0

У меня есть GridView, и я привязываю сетку динамически. В этой сетке я хочу сделать вторую ячейку доступной для редактирования. Я могу это сделать, и после того, как я изменил текстовые поля, я нажму кнопку «Отправить». Здесь моя проблема в событии нажатия кнопки. Я не могу получить значение текстового поля.Ошибка при получении значения из gridview asp.net

код

<asp:GridView ID="DGridView" runat="server" Font-Size="Small" Width="40%" PageSize="4" ShowHeader="False" OnRowDataBound="DGridView_RowDataBound" AutoPostBack="True" />       

protected void DGridView_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     TextBox txtseed = new TextBox(); 
     txtseed.ID = "txtseed"; 
     txtseed.Text = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "seed")); 
     e.Row.Cells[1].Controls.Add(txtseed); 
    } 

} 


protected void butSubmit_Click(object sender, EventArgs e) 
{ 
    for (int i = 0; i < DGridView.Rows.Count; i++) 
    { 
     strDNo = DGridView.Rows[i].Cells[0].Text; 

     dty = DGridView.Rows[i].Cells[1].FindControl("txtseed").ToString(); 
    } 
} 

Здесь в DTY бросает ошибку, может ли один помочь?

+0

Можете ли вы поместить дополнительную информацию об ошибке. –

+0

его задание об ошибке объекта – poc

+0

Вы получаете ошибку на этой строке «dty = DGridView.Rows [i] .Cells [1] .FindControl (« txtseed »). ToString();»? –

ответ

0

Перед тем, как получить текст, вам нужно бросить свой объект в TextBox. Не забудьте установить источник данных. Вы можете следовать этому коде, он работает.

public class Test 
    { 
     public string Seed { get; set; } 
    } 

protected void Page_Load(object sender, EventArgs e) 
    { 
     List<Test> test = new List<Test>(); 
     test.Add(new Test() {Seed = "ssss"}); 
     test.Add(new Test() { Seed = "aaaa" }); 
     DGridView.DataSource = test; 
     DGridView.DataBind(); 
    } 



    protected void DGridView_RowDataBound(object sender, GridViewRowEventArgs e) 
     { 
      if (e.Row.RowType == DataControlRowType.DataRow) 
      { 
       TextBox txtseed = new TextBox(); 
       txtseed.ID = "txtseed"; 
       txtseed.Text = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "seed")); 
       e.Row.Cells[0].Controls.Add(txtseed); 
      } 

     } 

protected void Button1_OnClick(object sender, EventArgs e) 
    { 
     for (int i = 0; i < DGridView.Rows.Count; i++) 
     { 
      var strDNo = DGridView.Rows[i].Cells[0].Text; 

      TextBox dty =(TextBox)DGridView.Rows[i].Cells[0].FindControl("txtseed"); 
      var z = dty.Text; 
     } 
    } 
+0

, который тоже дает System.NullReferenceException: ссылка на объект не установлена ​​в экземпляр объекта. Должны ли мы сделать аутопост верным? – poc