ASP.NET GridView-Daten, die ich auf der RowDatabound-Ereignis verliert nach post zurück

Habe ich eine asp.net Seite, wo ich ein gridview-Steuerelement, das binden von Daten aus einer DataTable.
In meiner 5 TEN Spalte der Tabelle zeige ich eine Radio-button-Liste, die 2 Radio-button Elemente (ja oder Nein). Für Einige Zeilen werde ich nicht zeigen das RadioButton-Steuerelement, wenn die 4-te Spalte Wert der Zelle leer ist. Es funktioniert einwandfrei.Aber in meiner button-click-Ereignis (postback), das Raster zeigt die Radio-button-Liste für diejenigen Zellen, die nicht angezeigt zunächst. Ich habe ViewState aktiviert für die Seite und die Kontrolle

Dies ist mein code

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns=false 
                             DataKeyNames="RequestDetailId" ondatabound="GridView1_DataBound"  EnableViewState ="true" AllowPaging=false
                             onrowdatabound="GridView1_RowDataBound">
       <Columns>
           <asp:BoundField DataField="RequestDetailId" HeaderText="Request Detail Id" />
           <asp:BoundField DataField="Item" HeaderText="Item" />
           <asp:BoundField DataField="Status" HeaderText="Status" />
           <asp:BoundField DataField="NewOffer" HeaderText="New Offer" />
           <asp:TemplateField HeaderText="Your Response" ItemStyle-CssClass="radioTD">
               <ItemTemplate>
                   <asp:RadioButtonList ID="radioList" runat="server">
                        <asp:ListItem Text="Yes" Value="Accept"></asp:ListItem>
                        <asp:ListItem Text="No" Value="Reject"></asp:ListItem>
                    </asp:RadioButtonList>

                 </ItemTemplate>
            </asp:TemplateField>
       </Columns>                    
 </asp:GridView>

in der code-behind -

 protected void Page_Load(object sender, EventArgs e)
 {
        if (!IsPostBack)
        {
           LoadItemDetails();
        }
  }

 private void LoadItemDetails()
 {
     DataTable objDt=  GetGridDataSource();
       if (objDt.Rows.Count > 0)
       {                     
                  GridView1.DataSource = objDt;
                  GridView1.DataBind(); 
        }
 }
 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
 {          
        if(String.IsNullOrEmpty (e.Row.Cells[3].Text.Trim())||(e.Row.Cells [3].Text =="&nbsp;"))
        {
            e.Row.Cells[4].Text = "";   
        }
  }

Meine Ergebnisse sind

Vor Dem Postback

ASP.NET GridView-Daten, die ich auf der RowDatabound-Ereignis verliert nach post zurück

Nach Postback

ASP.NET GridView-Daten, die ich auf der RowDatabound-Ereignis verliert nach post zurück

Wie behalte ich den Inhalt nach dem postback ? Dank

InformationsquelleAutor Shyju | 2011-10-14
Schreibe einen Kommentar