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 ==" "))
{
e.Row.Cells[4].Text = "";
}
}
Meine Ergebnisse sind
Vor Dem Postback
Nach Postback
Wie behalte ich den Inhalt nach dem postback ? Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, dass Sie den Text des GridView Zelle in der Tabelle auf einen leeren string, anstatt die Einstellung der Sichtbarkeit des RadioButtonList-Steuerelement auf false.
Löschen der Text-Eigenschaft ist das entfernen der markup-Code für das RadioButtonList-auf den ersten laden, aber beim postback das RowDataBound-Ereignis nicht ausgelöst wird und das RadioButtonList-Steuerelement neu erstellt wird und wieder angezeigt.
Um dies zu vermeiden, die Sie finden konnte, die Kontrolle und stellen Sie dessen Sichtbarkeit auf false, wird diese Erinnerung über postbacks.
Versuchen Sie Folgendes:
Hoffe, das hilft.
können Sie so etwas tun ..
aus der Beschreibung des Problems. es klingt so, als wenn Sie die Datenbindung im code-behind. in einem solchen Fall asp.net nicht die Erhaltung der datasource in den viewstate für Sie. versuchen Sie das abrufen der Daten und speichern in ViewState hashtable-Objekt, mit etwas
und empfangen von dort aus zwischen postbacks