DataGrid ItemCommand???

G

Guest

hi all,
i am having problem with using itemcommand of datagrid by way of asp:image
button.
i have put an image button in a datagrid item template and have set
CommandName="DeleteRecord" and have coded a switch to handle the event.
I have done this vb.net and it works fine..put in c# i can not catch the
item command..i stepped into code
via debug mode.. its just doest enter the dgrCaseType_ItemCommand...
I AM TOTALLY CLULESS.....WHAT AM I MISSING...
PLZ see code below.........

<asp:DataGrid ID="dgrCaseType" Runat="server" AutoGenerateColumns="False"
Width="100%" BorderWidth="2"
BorderColor="#ffffff" HeaderStyle-HorizontalAlign="Center"
AllowSorting="True" EnableViewState="True">
<AlternatingItemStyle CssClass="bg-ltgray"></AlternatingItemStyle>
<Columns>
<asp:BoundColumn HeaderText="Default Owner"
HeaderStyle-CssClass="menu_gray" DataField="CSPersonnell"
HeaderStyle-Width="150"></asp:BoundColumn>
<asp:TemplateColumn HeaderStyle-CssClass="menu_gray"
HeaderStyle-Width="150" HeaderText="Options"
ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:ImageButton ID="imgEdit" CommandName="EditRecord"
ImageUrl="../../Images/icon_edit.gif"
AlternateText="Edit" Runat="server"
Height="16" Width="16"
EnableViewState="False"></asp:ImageButton>

<asp:ImageButton ID="imgDelete" CommandName="DeleteRecord"
ImageUrl="../../Images/icon_trash.gif"
AlternateText="Delete" Runat="server"
Height="16" Width="16"
EnableViewState="False"></asp:ImageButton>
</ItemTemplate>
</asp:TemplateColumn>

</Columns>
</asp:DataGrid>

Then I have coded the following:

protected System.Web.UI.WebControls.DataGrid dgrCaseType;

protected void dgrCaseType_ItemCommand(object source,
System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
switch(e.CommandName)
{
case "EditRecord":
string s=e.Item.Cells[7].Text;
break;
case "DeleteRecord":

break;
}
}

private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
this.dgrCaseType.ItemDataBound += new
System.Web.UI.WebControls.DataGridItemEventHandler(this.dgrCaseType_ItemDataBound);
}

Thanks in advance..
-Sami.
 
T

Teemu Keiski

You need to wire the event handler for the DataGrid's ItemCommand event? Do
yiou have it done in code-behind in InitializeComponent method? (It looks
like dgrCaseType.ItemCommand += new
DataGridCommandEventHandler(method_name);..., which seems to be missing
there)

If you don't have it code-behind, you can wiree it on aspx on DataGrid's
declaration:

.... OnItemCommand="dgrCaseType_ItemCommand" ...

or make up similar wiring in InitializeComponent as for other events.


--
Teemu Keiski
MCP, Microsoft MVP (ASP.NET), AspInsiders member
ASP.NET Forum Moderator, AspAlliance Columnist
http://blogs.aspadvice.com/joteke



Syed Sami R. Shah said:
hi all,
i am having problem with using itemcommand of datagrid by way of asp:image
button.
i have put an image button in a datagrid item template and have set
CommandName="DeleteRecord" and have coded a switch to handle the event.
I have done this vb.net and it works fine..put in c# i can not catch the
item command..i stepped into code
via debug mode.. its just doest enter the dgrCaseType_ItemCommand...
I AM TOTALLY CLULESS.....WHAT AM I MISSING...
PLZ see code below.........

<asp:DataGrid ID="dgrCaseType" Runat="server" AutoGenerateColumns="False"
Width="100%" BorderWidth="2"
BorderColor="#ffffff" HeaderStyle-HorizontalAlign="Center"
AllowSorting="True" EnableViewState="True">
<AlternatingItemStyle CssClass="bg-ltgray"></AlternatingItemStyle>
<Columns>
<asp:BoundColumn HeaderText="Default Owner"
HeaderStyle-CssClass="menu_gray" DataField="CSPersonnell"
HeaderStyle-Width="150"></asp:BoundColumn>
<asp:TemplateColumn HeaderStyle-CssClass="menu_gray"
HeaderStyle-Width="150" HeaderText="Options"
ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:ImageButton ID="imgEdit" CommandName="EditRecord"
ImageUrl="../../Images/icon_edit.gif"
AlternateText="Edit" Runat="server"
Height="16" Width="16"
EnableViewState="False"></asp:ImageButton>

<asp:ImageButton ID="imgDelete" CommandName="DeleteRecord"
ImageUrl="../../Images/icon_trash.gif"
AlternateText="Delete" Runat="server"
Height="16" Width="16"
EnableViewState="False"></asp:ImageButton>
</ItemTemplate>
</asp:TemplateColumn>

</Columns>
</asp:DataGrid>

Then I have coded the following:

protected System.Web.UI.WebControls.DataGrid dgrCaseType;

protected void dgrCaseType_ItemCommand(object source,
System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
switch(e.CommandName)
{
case "EditRecord":
string s=e.Item.Cells[7].Text;
break;
case "DeleteRecord":

break;
}
}

private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
this.dgrCaseType.ItemDataBound += new
System.Web.UI.WebControls.DataGridItemEventHandler(this.dgrCaseType_ItemDataBound);
}

Thanks in advance..
-Sami.
 
K

Karl Seguin

first off, you aren't hooking up the ItemCommand event...you are hooking up
the ItemDataBound however...you need this:

this.dgrCaseType.ItemCommand+=new
DataGridCommandEventHandler(dgrCaseType_ItemCommand);

in your InitializeComponent (or page_load).


Secondly, assuming you have the above, you also need to make sure that you
aren't rebinding on postback, if so you'll lose ur event...

Karl

--
MY ASP.Net tutorials
http://www.openmymind.net/


Syed Sami R. Shah said:
hi all,
i am having problem with using itemcommand of datagrid by way of asp:image
button.
i have put an image button in a datagrid item template and have set
CommandName="DeleteRecord" and have coded a switch to handle the event.
I have done this vb.net and it works fine..put in c# i can not catch the
item command..i stepped into code
via debug mode.. its just doest enter the dgrCaseType_ItemCommand...
I AM TOTALLY CLULESS.....WHAT AM I MISSING...
PLZ see code below.........

<asp:DataGrid ID="dgrCaseType" Runat="server" AutoGenerateColumns="False"
Width="100%" BorderWidth="2"
BorderColor="#ffffff" HeaderStyle-HorizontalAlign="Center"
AllowSorting="True" EnableViewState="True">
<AlternatingItemStyle
CssClass="bg-ltgray"> said:
<Columns>
<asp:BoundColumn HeaderText="Default Owner"
HeaderStyle-CssClass="menu_gray" DataField="CSPersonnell"
HeaderStyle-Width="150"></asp:BoundColumn>
<asp:TemplateColumn HeaderStyle-CssClass="menu_gray"
HeaderStyle-Width="150" HeaderText="Options"
ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:ImageButton ID="imgEdit" CommandName="EditRecord"
ImageUrl="../../Images/icon_edit.gif"
AlternateText="Edit" Runat="server"
Height="16" Width="16"
EnableViewState="False"></asp:ImageButton>

<asp:ImageButton ID="imgDelete" CommandName="DeleteRecord"
ImageUrl="../../Images/icon_trash.gif"
AlternateText="Delete" Runat="server"
Height="16" Width="16"
EnableViewState="False"></asp:ImageButton>
</ItemTemplate>
</asp:TemplateColumn>

</Columns>
</asp:DataGrid>

Then I have coded the following:

protected System.Web.UI.WebControls.DataGrid dgrCaseType;

protected void dgrCaseType_ItemCommand(object source,
System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
switch(e.CommandName)
{
case "EditRecord":
string s=e.Item.Cells[7].Text;
break;
case "DeleteRecord":

break;
}
}

private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
this.dgrCaseType.ItemDataBound += new
System.Web.UI.WebControls.DataGridItemEventHandler(this.dgrCaseType_ItemData
Bound);
}

Thanks in advance..
-Sami.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top