Nicht Werte aus Textboxen in templateField innerhalb des gridview
Leid, der code weiter oben. Könnte sich jemand bitte helfen?
Ich habe ein gridview GridView1
welche aufgefüllt PageLoad()
durch den Import aus Excel-Tabelle hat drei Spalten:
- Datum
- Kunden
- PayingBookNoOrDD
Dem Blatt hat fünf Zeilen. Benutzer Bearbeiten können die Daten in Textboxen auf der Seite (markup unten). Nach dem Bearbeiten, klickt der Benutzer auf die submit-Schaltfläche, die ich brauche, um diese neuen Werte aus allen Textfelder und Aktualisierung der Excel-Tabelle aus, wo die GridView
bevölkert war.
Erstellte ich drei string-arrays: dateArray
, custArray
, und payingInBookArray
zu speichern, diese neuen Werte. Aber wenn ich die Anwendung aller drei arrays leer sind.
Markup:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" DataKeyNames="Date,Customers,PayingInBookNoOrDD" >
<Columns>
<asp:TemplateField>
<HeaderTemplate>Date</HeaderTemplate>
<ItemTemplate>
<asp:TextBox runat="server" ID="txtDate" Text='<%# Bind("Date") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>Customers</HeaderTemplate>
<ItemTemplate>
<asp:TextBox runat="server" ID="txtCustomers" Text='<%# Bind("Customers") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>PayingInBookNoOrDD</HeaderTemplate>
<ItemTemplate>
<asp:TextBox runat="server" ID="txtPayingInBookNoOrDD" Text='<%# Bind("PayingInBookNoOrDD") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Button ID="txtSubmit" runat="server" Text="Submit" onclick="txtSubmit_Click" />
Code-behind:
protected void Page_Load(object sender, EventArgs e)
{
string selectQuery = "SELECT * FROM [Month1$B2:D5]";
OleDbConnection conn = new OleDbConnection(connString);
conn.Open();
OleDbDataAdapter da = new OleDbDataAdapter(selectQuery, conn);
DataSet ds = new DataSet();
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
conn.Close();
da.Dispose();
conn.Dispose();
}
protected void txtSubmit_Click(object sender, EventArgs e)
{
IList<string> DateArray = new List<string>();
IList<string> custArray = new List<string>();
IList<string> payInBookArray = new List<string>();
foreach (GridViewRow gr in GridView1.Rows)
{
TextBox lblDate = (TextBox)gr.Cells[0].FindControl("txtDate");
DateArray.Add(lblDate.Text);
TextBox lblCustomers = (TextBox)gr.Cells[1].FindControl("txtCustomers");
custArray.Add(lblCustomers.Text);
TextBox lblPayInBookNo = (TextBox)gr.Cells[2].FindControl("txtPayingInBookNoOrDD");
payInBookArray.Add(lblPayInBookNo.Text);
}
ExportToExcel(DateArray.ToArray(), custArray.ToArray(), payInBookArray.ToArray());
}
Bitte lassen Sie mich wissen, wenn jemand eine Lösung hat.
Dank.
- Bitte bereinigen Sie Ihren code-Beispiele...viel zu viel zu Bearbeiten
- Hi CAbbott, Sorry ich bin neu auf dieser Seite. Ich versuchte, Bearbeiten Sie die Frage, aber es war noch mehr messier. Bitte gebt mir ein paar Minuten und ich werde es beheben.
- Dont call buttons
txtSubmit
oder nichts als Vorwort zu einertxt
wenn seine wirklich ein buttonbtn
, es kann sehr irreführend sein. Sollten Sie auch wickeln Sie Ihren connection-Objekt mit derusing
- Anweisung, so dass Sie nicht haben, um Anruf.dispose()
ausdrücklich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fügen Sie eine postback-Prüfung auf Ihrem Page_Load-Ereignis. Ich kann nicht sehen, nichts falsch mit Ihrem btn_Submit code.
Persönlich würde ich es ändern Sie Ihre
txtSubmit_Click
Funktion zu diesem:Hatte ich schon immer Probleme versucht direkt auf Werte in der
.Cells
Sammlung. Was passiert, wenn Sie anrufen.FindControl
auf der Zeile selbst?Wie schon andere gesagt haben, ist es eine überlegung Wert, neue Namen für Ihre HTML-Feldern und Variablen. Es scheint trivial jetzt haben
DateArray
TypIList
, aber es kurz warf mich für eine Schleife zu sehenDateArray.ToArray()
. Namenskonventionen und andere kleine source-code-änderungen werden nicht nehmen Sie viel Zeit, um jetzt fix, aber sparen Sie viel Zeit, später, wenn Sie haben, zu überdenken, diesen code nach Wochen oder Monaten der Arbeit an anderen Projekten.