دریافت شاخص(Index)ردیف در رویدادهای RowCommand و کلیک GridView درASP.Net
با سلام در این مقاله با مثال توضیح خواهیم داد که چگونه GridView Row را رد و GridView Row Index را پیدا کنید زمانی که دکمه، ImageButton و LinkButton داخل کنترل GridView با استفاده از C # و VB.Net درASP.Net کلیک کنید.
همچنین چگونگی خواص چندگانه CommandArgument را در کنترل GridView و نحوه بارگیری خواص چندگانه CommandArgument در رویدادهای کلیک Button را توضیح خواهیم داد
GridView Row و GridView Row Index را در رویداد RowCommand دریافت کنید
کد HTML
کد HTML شامل کنترل ASP.Net GridView ساده با ButtonField است و با رویداد OnRowCommand اختصاص داده شده است.
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"
OnRowCommand="OnRowCommand">
<Columns>
<asp:ButtonField CommandName="ButtonField" DataTextField="CustomerID"
ButtonType="Button"/>
</Columns>
</asp:GridView>
کد
در داخل رویداد پردازنده OnRowCommand ASP.Net GridView، ابتدا RowIndex از ویژگی Property CommandArgument گرفته شده و سپس با استفاده از RowIndex ، مرجع GridView Row تعیین می شود.
C #
protected void OnRowCommand(object sender, GridViewCommandEventArgs e)
{
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow gvRow = GridView1.Rows[index];
}
VB.Net
Protected Sub OnRowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs)
Dim index As Integer = Convert.ToInt32(e.CommandArgument)
Dim gvRow As GridViewRow = GridView1.Rows(index)
End Sub
دریافت ردیف GridView و ردیف شاخص GridView در روی کلیک رویداد دکمه در TemplateField
کد HTML
کد HTML شامل کنترل ASP.Net GridView ساده با یک دکمه در TemplateField است که در رویداد OnClick قرار دارد.
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Button1" runat="server" Text='<%#Eval("CustomerID")%>'
CommandArgument="Button1" OnClick="Button1_Click" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
کد
در داخل رویداد پردازنده دکمه OnClick ، ابتدا GridView Row با استفاده از ویژگی Parent ارجاع می شود و سپس با استفاده از مرجع GridView Row، RowIndex ، GridView ردیف تعیین میشود.
در اینجا فرستنده مرجع دکمه است که روی آن کلیک شده است، منشا سلول GridView و منشا سلول GridView در GridView ردیف است.
این رویکرد را می توان برای LinkButton و ImageButton استفاده کرد.
C #
protected void Button1_Click(object sender, EventArgs e)
{
GridViewRow gvRow = (GridViewRow)(sender as Control).Parent.Parent;
int index = gvRow.RowIndex;
}
VB.Net
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim gvRow As GridViewRow = CType(CType(sender, Control).Parent.Parent, _
GridViewRow)
Dim index As Integer = gvRow.RowIndex
End Sub
دستور CommandArgument را بر روی Event Button در TemplateField دریافت کنید
کد HTML
کد HTML شامل کنترل ASP.Net GridView ساده با یک دکمه در TemplateField است که در رویداد OnClick قرار دارد.
Button با خواص CommandName و CommandArgument تنظیم شده است.
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Button1" runat="server" Text='<%#Eval("CustomerID")%>' CommandName="Button1_Name" CommandArgument="Button1_Argument" OnClick="Button1_Click" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
کد
در داخل رویداد پردازنده Button Click ، ابتدا دکمه با استفاده از فرستنده ارجاع می شود و سپس از Object Button می توان خواص CommandName و CommandArgument را دریافت کرد.
این همان رویکرد را می توان برای LinkButton و ImageButton استفاده کرد.
C #
protected void Button1_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
string CommandName = btn.CommandName;
string CommandArgument = btn.CommandArgument;
}
VB.Net
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim btn As Button = CType(sender, Button)
Dim CommandName As String = btn.CommandName
Dim CommandArgument As String = btn.CommandArgument
End Sub
دکمه CommandArgument با مقادیر متعدد
کد HTML
کد HTML شامل کنترل ASP.Net GridView ساده با یک دکمه در TemplateField است که در رویداد OnClick قرار دارد.
مقادیر چندگانه را می توان در ویژگی CommandArgument یک دکمه با ترکیب چندین مقادیر با استفاده از جدا کننده تنظیم کرد.
بعدها ارزش ها را می توان از طریق تقسیم رشته پیوند شده با استفاده از تابع Split از کلاس String جدا کرد .
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Button1" runat="server" Text='<%#Eval("CustomerID")%>'
CommandArgument=
'<%#Eval("PostalCode") + "," + Eval("City") + "," + Eval("Country") %>'
OnClick="Button1_Click" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
کد
در داخل رویداد Button Click ، ابتدا دکمه با استفاده از شی فرستنده ارجاع می شود و سپس از شی Object Button object property of CommandArgument منتقل می شود.
مقدار CommandArgument با استفاده از تابع تقسیم کلاس String به مقادیر چندتایی تقسیم می شود.
C #
protected void Button1_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
string[] CommandArgument = btn.CommandArgument.Split(',');
string CommandArgument1 = CommandArgument[0];
string CommandArgument2 = CommandArgument[1];
string CommandArgument3 = CommandArgument[2];
}
VB.Net
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim btn As Button = CType(sender, Button)
Dim CommandName As String = btn.CommandName
Dim CommandArgument As String() = btn.CommandArgument.Split(",")
Dim CommandArgument1 As String = CommandArgument(0)
Dim CommandArgument2 As String = CommandArgument(1)
Dim CommandArgument3 As String = CommandArgument(2)
End Sub