har en funktion som ser ut så här:
protected void DEDR_UpdateNew(object sender, DataGridCommandEventArgs e)
{
DataSet dataSet = LoadWebs();
DataTable completeTable = dataSet.Tables\[0\];
DataTable duplicateTable = new DataTable();
System.Data.DataRow datarow = duplicateTable.NewRow();
int row = Convert.ToInt32(e.Item.ItemIndex);
TextBox EditText = null;
DropDownList EditDropDown = null;
EditText = (TextBox)e.Item.FindControl("txtResponsible");
dataSet.Tables\[0\].Rows\[row\]\["Responsible"\] = EditText.Text;
EditText = (TextBox)list.FindControl("Name");
dataSet.Tables\[0\].Rows\[row\]\["Name"\] = EditText.Text;
EditText = (TextBox)e.Item.FindControl("txtLastName");
dataSet.Tables\[0\].Rows\[row\]\["LastName"\] = EditText.Text;
EditText = (TextBox)e.Item.FindControl("txtEmailAddress");
dataSet.Tables\[0\].Rows\[row\]\["Email"\]= EditText.Text;
EditText = (TextBox)e.Item.FindControl("txtCompany");
dataSet.Tables\[0\].Rows\[row\]\["Company"\] = EditText.Text;
EditDropDown = (DropDownList)e.Item.FindControl("txtContact");
dataSet.Tables\[0\].Rows\[row\]\["Contact"\] = EditDropDown.SelectedItem.Text;
//dataSet.Tables\[0\].Rows.
dataSet.WriteXml(Server.MapPath("webs.xml"));
Session\["Webs"\] = null;
XmlDataGrid.EditItemIndex = -1;
}
Får detta fel:
Object reference not set to an instance of an object.
på denna raden
dataSet.Tables[0].Rows[row]["LastName"] = EditText.Text;
NETworkMedlem sedan juni 20011 732 inläggdataSet.Tables[0].Rows[row]["LastName"] finns helt enkelt inte eller så är det din findcontrol som inte fungerar... du kan inte tilldela ett värde på något som inte finns.
Sen krånglar du till det onödigt mycket:
Istället för:
TextBox EditText = null;
EditText = (TextBox)e.Item.FindControl("txtResponsible");
dataSet.Tables[0].Rows[row]["Responsible"] = EditText.Text;
Gör så här:
dataSet.Tables[0].Rows[row]["Responsible"] = ((TextBox)e.Item.FindControl("txtResponsible")).Text;
Får samma fel
Object reference not set to an instance of an object.
NETworkMedlem sedan juni 20011 732 inläggJa, det var inte en lösning på ditt problem alltså, bara ett tips. Problemet är fortfarande att du försöker tilldela ett värde på något som inte finns. :)
Förstår inte sorry, är nybörjar på c#
NETworkMedlem sedan juni 20011 732 inläggKan inte säga exakt vad som är fel eftersom jag inte vet hur ditt dataset ser ut men vi får väl utgå från att du fyller ditt dataset med data korrekt eftersom du lyckas uppdatera de två första. Finns "txtLastName" eller har du skrivit fel id? Är du säker på att den här platsen finns i ditt dataset, dataSet.Tables[0].Rows[row]["LastName"]? Felet beror alltså på att du försöker tilldela något som inte finns ett värde.
okey vill du se alla kod?:)
Sorry de första funkar inte heller:( hade bara komenterat bort dem för att kolla om de gjorde något
NETworkMedlem sedan juni 20011 732 inläggAh. :) Innan du kastar in en massa kod... börja med att skriva ut och kolla om du hittar texten i någon av dina textboxar:
Response.Write(((TextBox)e.Item.FindControl("txtResponsible")).Text);
Object reference not set to an instance of an object. felet får jag
PPMedlem sedan jan. 20012 204 inlägg är kanske DataSet New DataSet(); eller hur man skriver i c#..
wwwstekaren använd kodtaggarna nästa gång!
hittade ett fel, kontrollerna i aspx filen hade andra namn men det rfunkar inte ändå har byt ut till detta
EditText = (TextBox)list.FindControl("txtListName");
NETworkMedlem sedan juni 20011 732 inläggJapp, där har du felet ser jag ju nu (måste varit blind förut). Du måste ange vilken kontroll du ska köra din findcontrol på och på vilken rad. Prova nåt i den här stilen så ska det nog gå bättre:
Response.Write(((TextBox)DataGrid1.Items[e.Item.ItemIndex].FindControl("txtResponsible")).Text);
NETworkMedlem sedan juni 20011 732 inläggPPMedlem sedan jan. 20012 204 inlägg wwwstekaren använd (KOD) (/KOD) fast byt ut () mot []
okey får testa så här
EditText = (TextBox)list.FindControl("txtListName");
detta funkar inte
Response.Write(((TextBox)list.Items[e.Item.ItemIndex].FindControl("txtListName")).Text);
list är id:et på min datagrid i aspx filen
ska jag bara lägga in detta i min funktion?