[英]How to get the row index of a dynamically created asp.net GridView?
[英]how to get row index in gridview asp.net
我正在開發一個asp.net網站,我已經使用gridview創建了一個模板,並且在模板中放置了一個按鈕,我想通過單擊行ID的按鈕來瀏覽到另一頁。我需要您的幫助
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="ID" DataSourceID="SqlDataSource2" CellPadding="4" ForeColor="#333333" GridLines="None" Width="100%" OnRowCommand="GridView1_RowCommand" >
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:TemplateField>
<AlternatingItemTemplate>
<table class="nav-justified">
<tr>
<td class="auto-style5" dir="rtl" style="text-align: justify; vertical-align: top">
<asp:Image ID="Image7" runat="server" ImageUrl='<%# "~/images/"+(string)Eval("img") %>' Width="150px" />
</td>
<td class="auto-style6" dir="rtl" style="text-align: justify; vertical-align: top"> </td>
<td dir="rtl" style="text-align: justify; vertical-align: top">
<table class="nav-justified">
<tr>
<td>
<asp:Label ID="Label1" runat="server" Text='<%# (string)Eval("onvan") %>'></asp:Label>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label2" runat="server" Text='<%# Eval("comment").ToString().Length<=100?Eval("comment"):Eval("comment").ToString().Substring(0,100) %>'></asp:Label>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="auto-style5"> </td>
<td class="auto-style6"> </td>
<td dir="rtl" style="vertical-align: top; text-align: justify">
<asp:Label ID="Label3" runat="server" Text='<%# Eval("datetime") %>'></asp:Label>
</td>
</tr>
<tr>
<td class="auto-style5">
<asp:Button ID="Button1" runat="server" CssClass="btn" Text="Button" />
</td>
<td class="auto-style6"> </td>
<td> </td>
</tr>
</table>
</AlternatingItemTemplate>
<ItemTemplate>
<table class="nav-justified">
<tr>
<td class="auto-style3" dir="rtl" style="text-align: justify; vertical-align: top">
<asp:Image ID="Image8" runat="server" ImageUrl='<%# "~/images/"+(string)Eval("img") %>' Width="150px" />
</td>
<td class="auto-style4" dir="rtl" style="text-align: justify; vertical-align: top">
</td>
<td dir="rtl" style="text-align: justify; vertical-align: top">
<table class="nav-justified">
<tr>
<td>
<asp:Label ID="Label5" runat="server" Text='<%# (string)Eval("onvan") %>'></asp:Label>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label6" runat="server" Text='<%# Eval("comment").ToString().Length<=100?Eval("comment"):Eval("comment").ToString().Substring(0,100) %>'></asp:Label>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="auto-style3"> </td>
<td class="auto-style4"> </td>
<td dir="rtl" style="vertical-align: top; text-align: justify">
<asp:Label ID="Label4" runat="server" Text='<%# Eval("datetime") %>'></asp:Label>
</td>
</tr>
<tr>
<td class="auto-style3">
<asp:Button ID="Button2" runat="server" CommandArgument="<%# ((GridViewRow) Container).RowIndex%>" CommandName="nav" Text="Browse" CssClass="btn" />
</td>
<td class="auto-style4"> </td>
<td> </td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EditRowStyle BackColor="#7C6F57" />
<FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#E3EAEB" />
<SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#F8FAFA" />
<SortedAscendingHeaderStyle BackColor="#246B61" />
<SortedDescendingCellStyle BackColor="#D4DFE1" />
<SortedDescendingHeaderStyle BackColor="#15524A" />
</asp:GridView>
在您的C#頁面中,您可以編寫一條if語句?
嘗試這個 -
if (ID == "Button2") { Response.Redirect("http://yourDestination?"); }
您可以使用LinkButton代替按鈕,並使用類似以下問題的命令: 如何從asp.net中的gridview獲取選定的行字段,我認為這可以為您提供幫助。
我假設您正在傳遞gridview行索引作為參數,請使用<%# Container.DataItemIndex%>
獲取gridview的行索引,並且您的ButtonCode像
<asp:Button ID="Button2" runat="server" CommandArgument="<%# Container.DataItemIndex %>" CommandName="nav" Text="Browse" CssClass="btn" />
請記住,行索引始終以0開頭,如果要從1開始,請使用<%# Container.DataItemIndex + 1 %>
->在GridView中添加OnRowDataBound方法。
->然后在您的C#頁面中進行編碼。
受保護的void GridView1_RowDataBound(對象發送者,GridViewRowEventArgs e)
{
如果(e.Row.RowType == DataControlRowType.DataRow)
{
如果(Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem,“ ID”)))> 0)
{
Response.Redirect(Link);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.