2014-10-23 2 views
1

У меня есть gridview в приложении .NET forms, и после обратной передачи я не вижу значений, введенных в текстовое поле в gridview.TextBox в GridView не имеет значения для обратной передачи

ASPX:

<asp:GridView ID="gvItems" runat="server" AutoGenerateColumns="false" ShowHeader="false" DataKeyNames="ItemId" EnableViewState="true"> 
    <Columns> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:TextBox ID="txtItem" runat="server" Text="0" EnableViewState="true" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:BoundField DataField="ItemId" /> 
    </Columns> 
</asp:GridView> 

<asp:Button runat="server" ID="btn" Text="Submit" OnClick="btn_OnClick" OnClientClick="javascript:return someClientStuff();" /> 

Код За:

protected void btn_OnClick(object sender, System.EventArgs e) 
{ 
    foreach(GridViewRow row in gvItems.Rows) 
    {     
     if (row.RowType == DataControlRowType.DataRow) 
     { 
      var itemId = Convert.ToInt32(gvItems.DataKeys[row.RowIndex].Values[0]); 
      var itemValue = ((row.Cells[0].FindControl("txtItem") as TextBox).Text; 
     } 
} 

Я вижу Itemid населенного для каждой строки, но ItemValue всегда пустая строка.

Прошло некоторое время, так как я работал над бланком приложения, любая помощь приветствуется!

+1

выглядит как проблема с областью действия здесь 'var itemId и itemValue', где вы назначаете их после нажатия кнопки. Также у вас есть' if (IsPostBack) {} 'проверка загрузки вашей страницы ..? – MethodMan

+0

@DJKRAZE Не назначая их нигде - я просто отлаживаю это и замечаю, что они пусты для всех строк. – Prabhu

+0

это объем и проблема с записью данных после обратной связи – MethodMan

ответ

3

Я буду считать, что DataBindGridView не находится в if(!IsPostBack). Добавьте к этому Page_Load

if(!IsPostBack) 
{ 
    gvItems.DataSource = soruceOftheGrid 
    gvItems.DataBind(); 
} 
+0

Удивительный, вот и все. Не могли бы вы напомнить, в чем причина? Спасибо ... – Prabhu

+1

@Prabhu На каждую загрузку страницы вы снова и снова привязываете сетку. Который удалит текущие значения, если они не связаны с источником данных. Вы можете принять его, если поможете. – mybirthname

0

на кнопку мыши, попытайтесь сохранить значения в состоянии представления и в случае загрузки страницы, попробуйте назначить ViewState обратно в виде сетки, как и для каждой обратной передачи, события загрузки страницы называется. Хорошо указывать значения в виде сетки в режиме загрузки страницы, это поможет вам сохранить введенные значения.