Edit mode i DataGrid
hej, jeg har problemmer med at gå i edit mode i datagrid. Min kode ser således ud:private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
if(Session["Room"] != null)
{
this.currentRoom = (Room)Session["Room"];
}
if(Session["Room"] != null)
{
GetData();
}
else
{
Response.Redirect("~/Default.aspx");
}
}
if(Session["Room"] != null)
{
this.currentRoom = (Room)Session["Room"];
}
}
private void GetData()
{
DataBindDataGrid();
}
private void DataBindDataGrid()
{
DataTable dt = new DataTable();
dt = DataManagerClass.GetRoomEquipment(this.currentRoom.RoomID);
if(dt!=null)
{
dgRoomEquipment.DataSource = dt;
dgRoomEquipment.DataKeyField = "RoomEquipmentID";
dgRoomEquipment.DataBind();
}
else
{
dgRoomEquipment.Visible = false;
}
}
private void DataBindEquipmentDropDown()
{
DataTable dt = DataManagerClass.GetEquipment();
ddlEquipment.DataSource = dt;
ddlEquipment.DataTextField = "Equipment";
ddlEquipment.DataValueField = "EquipmentID";
ddlEquipment.DataBind();
}
private void DataBindEditEquipmentDropDown()
{
DataTable dt = DataManagerClass.GetEquipment();
ddlEditEquipment.DataSource = dt;
ddlEditEquipment.DataTextField = "Equipment";
ddlEditEquipment.DataValueField = "EquipmentID";
ddlEditEquipment.DataBind();
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
this.lnkbtnNewRoomEquipment.Click += new EventHandler(lnkbtnNewRoomEquipment_Click);
this.btnCancelNewRoomEquipment.Click += new EventHandler(btnCancelNewRoomEquipment_Click);
this.btnSaveNewRoomEquipment.Click += new EventHandler(btnSaveNewRoomEquipment_Click);
this.dgRoomEquipment.ItemCommand += new DataGridCommandEventHandler(dgRoomEquipment_ItemCommand);
this.dgRoomEquipment.ItemDataBound += new DataGridItemEventHandler(dgRoomEquipment_ItemDataBound);
}
#endregion
private void lnkbtnNewRoomEquipment_Click(object sender, EventArgs e)
{
this.pnlNewRoomEquipment.Visible = true;
DataBindEquipmentDropDown();
}
private void btnCancelNewRoomEquipment_Click(object sender, EventArgs e)
{
this.txtNewCurrentNumber.Text = "";
this.txtNewFutureNumber.Text = "";
this.txtNewNote.Text = "";
this.pnlNewRoomEquipment.Visible = false;
}
private void btnSaveNewRoomEquipment_Click(object sender, EventArgs e)
{
try
{
int newEquip = 0;
int equipID = Int32.Parse(ddlEquipment.SelectedValue);
int room = this.currentRoom.RoomID;
int current = Int32.Parse(txtNewCurrentNumber.Text);
int future = Int32.Parse(txtNewFutureNumber.Text);
string note = txtNewNote.Text;
bool saved = DataManagerClass.SetRoomEquipment(newEquip, equipID, room, current, future, note);
if(saved)
{
this.txtNewCurrentNumber.Text = "";
this.txtNewFutureNumber.Text = "";
this.txtNewNote.Text = "";
this.pnlNewRoomEquipment.Visible = false;
DataBindDataGrid();
}
else
{
Response.Write("<script>alert('Der kunne ikke gemmes.');</script>");
}
}
catch(Exception ex)
{
}
}
private void dgRoomEquipment_ItemCommand(object source, DataGridCommandEventArgs e)
{
int id = Int32.Parse(this.dgRoomEquipment.DataKeys[e.Item.ItemIndex].ToString());
if(e.CommandName.Equals("Edit"))
{
dgRoomEquipment.EditItemIndex = id;
}
DataBindDataGrid();
}
private void dgRoomEquipment_ItemDataBound(object sender, DataGridItemEventArgs e)
{
DataRowView drv = (DataRowView) e.Item.DataItem;
if(e.Item.ItemType == ListItemType.EditItem)
{
DataBindEditEquipmentDropDown();
ddlEditEquipment.SelectedValue = drv["EquipmentID"].ToString();
}
}
det er en knap der har comandname Edit og når jeg klikker på den, så går den godt nok i koden og sætter editItemIndex til det rigtige ID men på selve siden kan det ikke ses. Er der noget jeg har glemt??
