Ändern GridView-Spalte-Wert in C#
Ich habe ein GridView, die hat eine Spalte Status, der hat default-Wert False(in einem label) in jeder Zeile.
Es gibt eine Spalte mit dem Namen als Student, das ist link-button. Also, wenn Benutzer klickt auf den Student-name
ein gridview-Steuerelement geöffnet wird, erscheinen die Daten für diesen Benutzer. Ich ändere die Daten für das zweite GridView und speichern Sie es dann. Also, Wenn diese Daten erfolgreich gespeichert haben. Ich möchte zum ändern des Status 1. GridView von False auf True für die betreffende Zeile.
Also bitte machen Sie mir, wie es zu tun?
Ist es notwendig, zu binden, das GridView wieder. Gibt es eine einfache Methode, lassen Sie es mich bitte wissen.
Also das Haupt problem ist, wie zu ändern, die einem bestimmten Wert der Zelle in einem GridView, basierend auf einige action.
Schreibe ich das Stück Code, was ich versuche.
Ich 'm, speichern die Übergeordnete GridView-Zeile nicht. ist der ViewState.
protected void btnSave_Click(object sender, EventArgs e)
{
if (ViewState["RowIndexPOS"] != null)
{
int iRowIndex = Convert.ToInt32(ViewState["RowIndexPOS"]);
Label lblStatus = (Label)GridViewMultiplePOSAssociationId.Rows[iRowIndex].FindControl("LabelStatusPendingPOSId");
//Means all rows in GridView are successfully associated
if (table.Rows.Count == iResultCount)
{
lblStatus.Text = "Associated";
}
else
{
lblStatus.Text = "Pending";
}
}
}
Code zu binden, erste gridview
DataTable dt = new DataTable();
DataRow dr = null;
dt.Columns.Add(new DataColumn("Row Number", typeof(string)));
dt.Columns.Add(new DataColumn("POS Id", typeof(string)));
dt.Columns.Add(new DataColumn("Action", typeof(string)));
dt.Columns.Add(new DataColumn("Status", typeof(string)));
for (int index = 0; index < m_listStrPendingListOfPOS.Count; index++)
{
dr = dt.NewRow();
int iRowNo = index + 1;
dr["Row Number"] = iRowNo;
string strGridViewPOSId = m_listStrPendingListOfPOS[index];
dr["POS Id"] = strGridViewPOSId;
dr["Action"] = string.Empty;
dr["Status"] = "Pending";
dt.Rows.Add(dr);
}
ViewState["POSTable"] = dt;
GridViewMultiplePOSAssociationId.DataSource = dt;
GridViewMultiplePOSAssociationId.DataBind();
Wenn ich versuche diese. Spalte Status ist Leer, in jeder Zeile. Nach der Einstellung Verbunden.
Übergeordnete GridView-nicht zugänglich ist. Aber ich habe die Zeile nicht. info.
es gibt viele Möglichkeiten, es zu tun. Wenn die Eltern gebunden ist, um eine datasource und wenn, ist zugänglich in speichern func, können Sie die Wirkung der änderung. Oder wenn der Elternteil gebunden ist, die Datenbank, die Sie ändern können, und neu zu laden. Ohne das komplette Szenario ist es schwer zu kommentieren.
Elternteil gebunden ist dataset.
Gibt es irgendwelche Fehler bei der oben genannten Funktion? Es wird gut sein, um zu überprüfen, ob lblStatus nicht null ist, bevor Sie tatsächlich ändern Sie dessen Wert.
InformationsquelleAutor user3264676 | 2014-03-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus den oben genannten Szenario, was ich schließen könnte, ist, dass, wenn Sie änderungen in der zweiten grid-Ansicht (zeigt die Schüler-info) und speichern Sie es erfolgreich, dann Wert aus Spalte 'Status' in der übergeordneten grid-Ansicht geändert werden sollte, um "Wahr" ist.
Lösungsansätze:
gesetzt wird, je nach Zustand, sollten Sie diesen Wert jedes
und jedes mal, wenn das gridview geladen wird. So können Sie dies entweder
in der page_load-Funktion oder in der Grid-Ansicht Laden-Funktion wie die grid-Ansicht
nicht wissen, dass dieser Wert geändert wurde, früher, es sei denn, Sie
setzen Sie diesen Wert manuell ein.
könnte abrufen oder ändern Sie den Wert in den Datensatz (wie du es hier) und kann immer
die aktualisierte Wert angezeigt im gridview-Spalte 'Status' ohne
es manuell zu tun.
Hinweis: ich konnte dir helfen mit dem code für das gleiche, wenn du posten könntest etwas mehr code, was passiert.
Lösung Part2:
Versuchen Sie unter:
Lassen Sie uns annehmen, dass Sie die 'Code zu binden, erste gridview' in der Methode
bindTheGriView()
. Mit dieser Annahme den code unten könnte gut funktionieren. Bitte ändern Sie nach Ihrem code.btnSave_Click Methode:
Ihre Methode, die der 'Code zu binden, erste gridview' (bindTheGriView(bool statusFlag) in diesem Beispiel) so Aussehen:
Sollten Sie rufen diese Bindung Methode jedes mal, wenn Sie denken, dass der Status geändert wurde, seit es ist ein dynamischer Daten.
Nennen Sie auch die Funktion bindTheGriView() in der Page_Load-Methode
check-out der Lösung Teil meiner Antwort, und lassen Sie mich wissen, wenn Sie Probleme haben.
Ich habe getan, wie U gesagt haben, zu tun. Immer noch der Status Spalte Wert wird nicht geändert. Seine immer noch Ausstehende statt Assoziiert.
Tut mir Leid ich habe einen Fehler gemacht. Ich vergaß Total über die Page_Load-Funktion. Gib mir etwas Zeit, ich erhalten zurück zu Ihnen
können Sie beschreiben, mehr spezifischen. die url ist defekt
InformationsquelleAutor user3240361
Asssuming, dass Sie mit BoundFields für Ihre Link-Schaltfläche Spalten und Sie möchten, behandeln Sie das LinkButton-click-Ereignis (anstatt z.B. RowCommand der GridView):
Ist Ihre erste Gridview Spalte Status hängt davon ab, Zweite GridView-Wert ?? Wenn es nicht hängt davon ab, zweite gridview wie geschrieben in der Beschreibung, dann versuchen Sie, diesen code verwenden, wird es funktionieren.
Ich will nicht um den status zu ändern, wenn ich auf den LinkButton. Es ist, Wenn ich auf den Speichern-button, der zweite GridView.
InformationsquelleAutor Aftab Ahmed
Beim speichern der Daten des ersten gridview,bei dieser Gelegenheit ändern das dataset binden, die 2. gridview,müssen Sie laden die 2. gridview ist an der Zeit, der Daten speichern Sie am 1. gridview,also keine andere option.
InformationsquelleAutor Arnab Dey