Hej nat,
Hmm, nu begynder det at blive lidt mærkeligt synes jeg. Det burde virke med den beskrivelse jeg har givet. Idet det nu kan være svært at finde fejlen har jeg lavet en lille testside til dig som sætter det hele op, så kan du jo sammenligne og finde fejlen. :)
HTML-scriptet:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DataGridTest.aspx.cs" Inherits="DataGridOnClickTest_DataGridTest" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="
http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:datagrid id="DataGridTest" runat="server"
Width="300px" CellPadding="4" AutoGenerateColumns="False" ForeColor="#333333" GridLines="None" OnItemCreated="DataGridTest_ItemCreated" OnItemCommand="DataGridTest_ItemCommand">
<SelectedItemStyle Font-Bold="True"></SelectedItemStyle>
<AlternatingItemStyle BackColor="White"></AlternatingItemStyle>
<Columns>
<asp:BoundColumn HeaderText="TestText" DataField="TestText"></asp:BoundColumn>
<asp:ButtonColumn ButtonType="PushButton" CommandName="Delete" HeaderText="DeleteRow" Text="Delete"></asp:ButtonColumn>
</Columns>
</asp:datagrid>
</div>
</form>
</body>
</html>
Tilhørende backend C# kode:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class DataGridOnClickTest_DataGridTest : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = CreateTableHeader();
DataSet dst = PopulateTable(dt);
Session["DataSet"] = dst;
}
DataSet ds = Session["DataSet"] as DataSet;
refreshDataGrid(ds);
}
private DataTable CreateTableHeader()
{
DataTable dtContents = new DataTable();
dtContents.Columns.Add("TestText");
dtContents.Columns.Add("DeleteRow");
return dtContents;
}
private DataSet PopulateTable(DataTable dtContents)
{
for (int i = 0; i < 5; i++)
{
DataRow dr = dtContents.NewRow();
dr[0] = "Test " + i.ToString();
dtContents.Rows.Add(dr);
}
DataSet ds = new DataSet();
ds.Tables.Add(dtContents);
ds.Tables[0].TableName = "Contents";
return ds;
}
private void refreshDataGrid(DataSet ds)
{
if (ds != null && ds.Tables[0].Rows.Count > 0)
{
DataGridTest.DataSource = ds.Tables[0].DefaultView;
DataGridTest.DataMember = "Contents";
DataGridTest.DataBind();
}
}
protected void DataGridTest_ItemCreated(object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.EditItem)
{
int intButtonCell = 1; //Indeks for knap-søjlen
Button btnDel = e.Item.Cells[intButtonCell].Controls[0] as Button;
if (btnDel != null)
{
btnDel.Attributes.Add("OnClick", "return confirm('Er du sikker på du vil slette den række?')");
}
}
}
protected void DataGridTest_ItemCommand(object source, DataGridCommandEventArgs e)
{
}
}
Håber det er nok til at kunne finde fejlen! :)
Mvh.
- Snap