Jag har fått ett fel som jag inte kan hitta var det är, egentligen ska det väl inte vara några problem.Sessionsproblem (tror jag)
<code>
.aspx
<asp:GridView ID="grdOrders" runat="server" DataKeyNames="orderID"
AutoGenerateColumns="False" OnSelectedIndexChanged="grdOrders_SelectedIndexChanged">
<SelectedRowStyle BackColor="Green" />
<Columns>
<asp:BoundField DataField="orderID" HeaderText="OrderID" />
<asp:BoundField DataField="orderDate" HeaderText="Orderdatum" DataFormatString="{0:yyyy-MM-dd HH:mm}" />
<asp:BoundField DataField="dateShipped" HeaderText="Skickad" DataFormatString="{0:yyyy-MM-dd HH:mm}" />
<asp:CheckBoxField DataField="verified" HeaderText="Godkänd" />
<asp:CheckBoxField DataField="completed" HeaderText="Klar" />
<asp:CheckBoxField DataField="canceled" HeaderText="Avbokad" />
<asp:BoundField DataField="customerName" HeaderText="Kund" />
<asp:ButtonField ButtonType="Button" CommandName="Select" Text="Välj" />
</Columns>
</asp:GridView>
<br /><br />
<uc:orderDetails ID="orderDetails" runat="server" />
orderAdmin.cs (bara den kod som behövs)
protected void grdOrders_SelectedIndexChanged(object sender, EventArgs e)
{
Session["adminOrderID"] = int.Parse(grdOrders.DataKeys[grdOrders.SelectedIndex].Value.ToString());
}
user controlen .cs
protected void Page_PreRender(object sender, EventArgs e)
{
if (Session["adminOrderID"] != null)
{
populateControls();
setEditMode(editMode);
}
else
this.Visible = false;
}
protected void Page_Load(object sender, EventArgs e)
{
}
private void populateControls()
{
int orderID = int.Parse(Session["adminOrderID"].ToString());
lblStatus.Text = Session["adminOrderID"].ToString();
Orders orders = new Orders();
orders = OrderAccess.GetInfo(orderID);
lblOrderID.Text = "Nu visas order # " + orders.OrderID.ToString();
lblTotalAmount.Text = String.Format("{0:c}", orders.TotalAmount);
txtOrderDate.Text = orders.OrderDate;
txtShippedDate.Text = orders.DateShipped;
cbCanceled.Checked = orders.Canceled;
cbCompleted.Checked = orders.Completed;
cbIsPayed.Checked = orders.IsPayed;
cbSendSms.Checked = orders.SendSms;
cbVerified.Checked = orders.Verified;
txtComments.Text = orders.Comments;
txtCustomerName.Text = orders.CustomerName;
txtShippingAddress.Text = orders.ShippingAddress;
txtEmail.Text = orders.CustomerEmail;
btnEdit.Enabled = true;
btnUpdate.Enabled = false;
btnCancel.Enabled = false;
if (cbCanceled.Checked || cbCompleted.Checked)
{
btnCancelOrder.Enabled = false;
btnVerifie.Enabled = false;
btnComplete.Enabled = false;
}
else if (cbVerified.Checked)
{
btnVerifie.Enabled = false;
btnCancelOrder.Enabled = false;
btnComplete.Enabled = true;
}
else
{
btnComplete.Enabled = false;
btnCancelOrder.Enabled = true;
btnVerifie.Enabled = true;
}
try
{
grdProducts.DataSource = OrderAccess.GetOrderDetailsInfo(orderID);
grdProducts.DataBind();
}
catch (Exception ex)
{
lblStatus.Text += ex.Message;
}
}
</code>
Det som blir fel är att när jag klickar på en rad i griden som visar ordrarna så ska det komma upp detaljer om den ordern, de ligger i user controlen. Jag har testat och jag får ut rätt värde i Sessionen, klickar jag på selectknappen i griden sen går tillbaka till sidan (har en länk) så visas rätt detaljer.