Gridview-problemer
Hej folkens,Kan nogen give en forklaring på, hvorfor jeg har et gridview der ikke virker, når den skal opdatere en værdi.
Jeg har to felter, værdi og fragtpris, der hentes fra en xml-fil, ind i en datatable, der så bliver sat som datasource til gridviewet.
Når jeg så skifter til editmode og klikker opdater, så affyres rowupdating eventet, men hvor det før har virket fint med at hive en værdi ud med:
GridViewRow gvrow = GridView1.Rows[e.RowIndex];
string belobsgraense = ((TextBox)gvrow.Cells[0].Controls[0]).Text;
string fragtpris = ((TextBox)gvrow.Cells[1].Controls[0]).Text;
Så vil parseren nu have at Textbox'en skal castes til en LiteralControl istedet? Og hvis jeg gør det, så er feltet tomt, pånær nogle \r\n (linieskift-tegn)
Det forstår jeg intet af.
Lidt markup:
<asp:GridView ID="GridView1" runat="server" GridLines="Horizontal" AutoGenerateColumns="false"
ShowHeader="true" UseAccessibleHeader="true" Width="100%" CellPadding="5" CellSpacing="0">
<Columns>
<asp:BoundField DataField="Graense" HeaderText="Beløbsgrænse" />
<asp:BoundField DataField="Fragtpris" HeaderText="Fragtpris" />
<asp:CommandField ButtonType="Link" CancelText="Annuller" UpdateText="Opdater" EditText="Rediger" ShowEditButton="true" ShowCancelButton="true" CausesValidation="false" />
</Columns>
</asp:GridView>
Lidt kode:
/// <summary>
/// Binder data til gridview'et med fragtpriserne
/// </summary>
private void BindGridView1()
{
GridView1.DataSource = GetXmlContent();
GridView1.DataBind();
}
private DataTable GetXmlContent()
{
XmlDocument xmldoc = new XmlDocument();
DataTable dt = new DataTable();
try
{
xmldoc.Load(this.configfile);
XmlNodeList xmllist = xmldoc.SelectNodes("indstillinger/fragt[@type='" + selectfreightmethod.SelectedValue + "']/*");
dt.Columns.Add("Graense");
dt.Columns.Add("Fragtpris");
foreach (XmlNode node in xmllist)
{
DataRow dr = dt.NewRow();
dr[0] = node.Attributes.Item(0).Value;
dr[1] = node.InnerText;
dt.Rows.Add(dr);
}
}
catch (XmlException xmlE)
{
System.Web.HttpContext.Current.Response.Write(xmlE);
}
return dt;
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow gvrow = GridView1.Rows[e.RowIndex];
string belobsgraense = ((TextBox)gvrow.Cells[0].Controls[0]).Text;
string fragtpris = ((TextBox)gvrow.Cells[1].Controls[0]).Text;
XmlNodeList nodes = xmldoc.SelectNodes("indstillinger/fragt[@type='" + selectshippingmethod.SelectedValue + "']/*");
XmlNode node = nodes[e.RowIndex];
node.Attributes["oevre"].Value = belobsgraense;
node.InnerText = fragtpris;
xmldoc.Save(this.configfile);
GridView1.EditIndex = -1;
BindGridView1();
}
// Disse events tildeles i OnInit
private void BindEvents()
{
// Init Gridview1 eventhandlers
GridView1.RowUpdating += new GridViewUpdateEventHandler(GridView1_RowUpdating);
GridView1.RowUpdated += new GridViewUpdatedEventHandler(GridView1_RowUpdated);
GridView1.RowEditing += new GridViewEditEventHandler(GridView1_RowEditing);
GridView1.RowCancelingEdit += new GridViewCancelEditEventHandler(GridView1_RowCancelingEdit);
}