DevTrain Startseite SharePoint Camp ? In 5 Tagen zum SharePoint Profi!  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren



 

Forum: ASP.NET | Thema: Ungültiger Versuch, zu FieldCount, da der Datenleser bereits geschlossen wurde | Von: wolfgang wagner ( 21.02.2005 14:12)

hi zusammen!

ich versuche eine asp.net anwendung die ein datagrid benutzt, zu schreiben. dabei kam ich auf folgendes phaenomen, das ich mir nicht erklaeren kann. ich benutze auf 2 seiten die gleiche systematik um daten in ein datagrind zu bekommen, nur bekommen ich auf einem beim versuch zu editieren o.g. fehlermeldung und ich kann mir nicht erklaeren warum?!?!?!

hier der code:
seite 1:
<asp:datagrid id="dgHardware" style="Z-INDEX: 102; LEFT: 22px; POSITION: absolute; TOP: 62px"
runat="server" Width="952px" Height="166px" DataKeyField="hw_ref" AutoGenerateColumns="False"
GridLines="None" CellSpacing="1" CellPadding="3" BackColor="White" BorderWidth="2px" BorderStyle="Ridge"
BorderColor="White" OnItemDataBound="dgHardware_ItemDataBound">
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#9471DE"></SelectedItemStyle>
<ItemStyle ForeColor="Black" BackColor="#DEDFDE"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="#E7E7FF" BackColor="#4A3C8C"></HeaderStyle>
<FooterStyle ForeColor="Black" BackColor="#C6C3C6"></FooterStyle>
<Columns>
<asp:BoundColumn DataField="hw_rechnername_str" HeaderText="Rechnername"></asp:BoundColumn>
<asp:BoundColumn DataField="hw_herst_str" HeaderText="Hersteller"></asp:BoundColumn>
<asp:BoundColumn DataField="hw_tbez_str" HeaderText="Bezeichnung"></asp:BoundColumn>
<asp:BoundColumn DataField="hw_proz_str" HeaderText="Prozessor"></asp:BoundColumn>
<asp:BoundColumn DataField="hw_ram_str" HeaderText="Arbeitsspeicher"></asp:BoundColumn>
<asp:BoundColumn DataField="hw_bs_str" HeaderText="Betriebssystem"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="Rechnertyp">
<ItemTemplate>
<%# getHtrtyp(DataBinder.Eval(Container.DataItem, "ht_rtyp_ref")) %>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="ItemDropDownRechnertyp" Runat="server" DataTextField="htrtyp_name_str" DataValueField="htrtyp_ref" DataSource='<%# getHwtyp() %>' SelectedIndex='<%# GetSelIndex(DataBinder.Eval(Container.DataItem, "ht_rtyp_ref")) %>' />
</EditItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="hw_bem_str" HeaderText="Bemerkung"></asp:BoundColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Aktualisieren" CancelText="Abbrechen" EditText="Bearbeiten"></asp:EditCommandColumn>
<asp:ButtonColumn Text="Löschen" CommandName="Delete"></asp:ButtonColumn>
</Columns>
<PagerStyle HorizontalAlign="Right" ForeColor="Black" BackColor="#C6C3C6"></PagerStyle>
</asp:datagrid>

seite 1 codebehind:
...
private void Page_Load(object sender, System.EventArgs e)
{
// Hier Benutzercode zur Seiteninitialisierung einfügen

this.iId = (int) Session.Get("id");
this.strDbConn = ConfigurationSettings.AppSettings["connString"];
this.strDownloadKennung = ConfigurationSettings.AppSettings["downloadKennung"];
this.datAktDatum = DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss");


if (!IsPostBack)
{
showData();
}
}
...
//dgHardware fuellen
private void showData()
{
string query = "SELECT c.* FROM kng AS a INNER JOIN kng_hw AS b ON a.kng_ref = b.kng_ref INNER JOIN hw AS c ON b.hw_ref = c.hw_ref WHERE a.kng_ref LIKE '" + this.iId +"'";
this.sqlConn = new SqlConnection(this.strDbConn);
this.sqlAdapter = new SqlDataAdapter(query, this.sqlConn);
this.sqlConn.Open();
this.dsDaten = new DataSet();
this.sqlAdapter.Fill(this.dsDaten, "hw" );

this.createList(query);

//neue zeile einfuegen
DataRow BlankRow = this.dsDaten.Tables["hw"].NewRow( );
BlankRow[1] = "Bitte Wert eingeben!";
this.dsDaten.Tables[ "hw" ].Rows.InsertAt( BlankRow, 0 );

//daten binden
this.dgHardware.DataSource = this.dsDaten;
this.dgHardware.DataBind();
this.sqlConn.Close();
}
...

nun seite 2:
<asp:datagrid id="dgSoftware" style="Z-INDEX: 102; LEFT: 23px; POSITION: absolute; TOP: 68px"
runat="server" Height="235px" Width="856px" AutoGenerateColumns="False" DataKeyField="sw_ref" GridLines="None" CellPadding="3" BackColor="White"
BorderWidth="2px" CellSpacing="1" BorderStyle="Ridge" BorderColor="White" PageSize="3" AllowPaging="True">
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#9471DE"></SelectedItemStyle>
<ItemStyle ForeColor="Black" BackColor="#DEDFDE"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="#E7E7FF" BackColor="#4A3C8C"></HeaderStyle>
<FooterStyle ForeColor="Black" BackColor="#C6C3C6"></FooterStyle>
<Columns>
<asp:BoundColumn DataField="sw_bez_str" HeaderText="Bezeichnung"></asp:BoundColumn>
<asp:BoundColumn DataField="sw_herst_str" HeaderText="Hersteller"></asp:BoundColumn>
<asp:BoundColumn DataField="sw_filesys_str" HeaderText="Dateisystem"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="Softwareart">
<ItemTemplate>
<%# getHtswtyp(DataBinder.Eval(Container.DataItem, "htswtyp_ref")) %>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="DropDownSwref" Runat="server" DataTextField="htswtyp_name_str" DataValueField="htswtyp_ref" DataSource='<%# getSwtyp() %>' SelectedIndex='<%# GetSelIndexSwart(DataBinder.Eval(Container.DataItem, "htswtyp_ref")) %>' />
</EditItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="sw_bem_str" HeaderText="Bemerkung"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="zugehörige Hardware">
<ItemTemplate>
<%# getHwref(DataBinder.Eval(Container.DataItem, "hw_ref")) %>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="DropDownHwref" Runat="server" DataTextField="id" DataValueField="hwId" DataSource='<%# getRechner()%>' SelectedIndex='<%# GetSelIndexRechner(DataBinder.Eval(Container.DataItem, "hw_ref")) %>' />
</EditItemTemplate>
</asp:TemplateColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Aktualisieren" CancelText="Abbrechen" EditText="Bearbeiten"></asp:EditCommandColumn>
<asp:ButtonColumn Text="Löschen" CommandName="Delete"></asp:ButtonColumn>
</Columns>
<PagerStyle HorizontalAlign="Right" ForeColor="Black" Position="TopAndBottom" BackColor="#C6C3C6"></PagerStyle>
</asp:datagrid>

und der codebehind:
private void Page_Load(object sender, System.EventArgs e)
{
// Hier Benutzercode zur Seiteninitialisierung einfügen
this.strDbConn = ConfigurationSettings.AppSettings["connString"];
this.strDownloadKennung = ConfigurationSettings.AppSettings["downloadKennung"];
//this.iId = (int) Session.Get("id");
alHwId = new ArrayList((ArrayList) Session["alHwId"]);
this.iId = 1231;
this.datAktDatum = DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss");

//datatable mit id/hwid erzeugen
DataColumn dcTemp;
DataRow drTemp;

dcTemp = new DataColumn();
dcTemp.DataType = System.Type.GetType("System.Int32");
dcTemp.ColumnName = "id";
dtHwid.Columns.Add(dcTemp);

dcTemp = new DataColumn();
dcTemp.DataType = System.Type.GetType("System.Int32");
dcTemp.ColumnName = "hwId";
dtHwid.Columns.Add(dcTemp);

ArrayList alIds = (ArrayList)Session["alHwId"];
int[][] iIds = new int[alIds.Count][];
for (int i = 0; i < alIds.Count; i++)
{
drTemp = dtHwid.NewRow();
drTemp["id"] = i+1;
drTemp["hwId"] = Convert.ToInt32(alIds[i].ToString());

dtHwid.Rows.Add(drTemp);
}
//ENDE datatable

if (!IsPostBack)
{
showDataSoftware();
showDataHardware();
}
}
...
private void showDataSoftware()
{
string strWherebuilder = "";
for (int i =0; i < this.alHwId.Count; i++)
{
if (this.alHwId.Count == 1 || i == (this.alHwId.Count-1) ) strWherebuilder += this.alHwId[i].ToString();
else strWherebuilder += this.alHwId[i].ToString() + " OR hw_ref = ";
}
string query = "SELECT * FROM sw WHERE hw_ref = " + strWherebuilder;

//DEBUG
this.tbDebug.Text += "QUERY: " + query;

this.sqlConn = new SqlConnection(this.strDbConn);
this.sqlAdapter = new SqlDataAdapter(query, this.sqlConn);
this.sqlConn.Open();
this.dsDaten = new DataSet();
this.sqlAdapter.Fill(this.dsDaten, "sw" );

//this.createList(query);

//neue zeile einfuegen
DataRow BlankRow = this.dsDaten.Tables["sw"].NewRow( );
BlankRow[1] = "Bitte Wert eingeben!";
this.dsDaten.Tables[ "sw" ].Rows.InsertAt( BlankRow, 0 );

//daten binden
this.dgSoftware.DataSource = this.dsDaten;
this.dgSoftware.DataBind();
this.sqlConn.Close();
}
...

beim databinding von this.dgSoftware tritt dann der o.g. fehler auf wenn ich editieren will... und ich habe keine ahnung warum!!!

kann mir einer von euch vielleicht helfen?!?!?!

thx
wolfgang



Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!

 Betreff:
 Nachricht: Den Beitrag finden Sie nun unter: http://beta.devtrain.de/foren Die Benutzerdaten und Foreninhalte von beta.devtrain.de und www.devtrain.de sind die selben.
Sie können sich dort sogar per RSS über neue Inhalte informieren lassen.
Bei Problemen bitte direkt Mail an asp [AT] ppedv.de.

 Signatur:

  



Login
Username:


Passwort:






Passwort vergessen?

Advanced Developers Conference vom 14.-15. Februar 2011

© Copyright 2003 ppedv AG