asp.net gridview添加序号列

asp.net gridview添加序号列,第1张

你好:)

最好的方式是——在登录之后根据角色不同动态生成sql查询语言(该查询仅仅包含需要的列)。然后在page_load的if(!ispostback)中使用sqldataadapter去fill一个datatable,然后把datatable放到viewstate["dt"]中。然后在gridview_pageindexchanging事件中gridview1.pageindex

=

e.newpageindexgridview1.datasource

=

(datatable)viewstate["dt"]gridview1.databind()即可。

这个需要将checkbox添加到GridView的模板列中,然后用下面代码

for (int i = 0 i < GridView1.Rows.Count i++)

{

    CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1")

    if (cbox.Checked == true)

    {

        //要做的事

    }

}

上面从i就能知道是第几行,如果要获取表中id,还需要模板列中隐藏id,才好获取。

思路:先定义事件,在linkbutton上绑定事件,也就是一个CRUD的方法,然后在后台的OnRowCommand事件里调用绑定的事件即可。

具体举例如下:

1、前端的代码如下:

<asp:GridView ID="gridViewDxjk" CssClass="gridview" runat="server" AllowPaging="True"

DataKeyNames="P_ID" AutoGenerateColumns="False"

RowStyle-HorizontalAlign="Center" BorderWidth="1px" PageSize="17"

onrowdeleting="gridViewDxjk_RowDeleting"

OnRowDataBound="gridViewDxjk_RowDataBound"

onpageindexchanging="gridViewDxjk_PageIndexChanging" >

<HeaderStyle CssClass="head" />

<PagerStyle CssClass="pager" />

<RowStyle CssClass="row" />

<EditRowStyle CssClass="editrow" />

<AlternatingRowStyle CssClass="altrow" />

<EmptyDataRowStyle CssClass="empty" />

<Columns>

<asp:HyperLinkField HeaderText="编辑" ControlStyle-Width="50" DataNavigateUrlFields="P_ID" DataNavigateUrlFormatString="smsModify.aspx?id={0}" Text="编辑" >

<ControlStyle Width="50px"></ControlStyle></asp:HyperLinkField>

<asp:CommandField ShowDeleteButton="true" DeleteText="删除" >

<ControlStyle Width="50px"></ControlStyle></asp:CommandField>

<asp:BoundField DataField="P_ID" HeaderText="id" SortExpression="P_ID" ItemStyle-HorizontalAlign="Center" Visible="False" >

<ItemStyle HorizontalAlign="Center"></ItemStyle></asp:BoundField>

<asp:BoundField DataField="P_NAME" HeaderText="名称" SortExpression="P_NAME" />

<asp:BoundField DataField="P_Type" HeaderText="通知方式" SortExpression="P_Type" ItemStyle-HorizontalAlign="Center" >

<ItemStyle HorizontalAlign="Center"></ItemStyle></asp:BoundField>

<asp:BoundField DataField="P_Fzr" HeaderText="姓名" SortExpression="P_Fzr" ItemStyle-HorizontalAlign="Center" >

<ItemStyle HorizontalAlign="Center"></ItemStyle></asp:BoundField>

<asp:BoundField DataField="P_tel" HeaderText="通知手机" SortExpression="P_tel" ItemStyle-HorizontalAlign="Center" >

<ItemStyle HorizontalAlign="Center"></ItemStyle></asp:BoundField>

<asp:BoundField DataField="P_jg" HeaderText="通知间隔(小时)" SortExpression="P_jg" ItemStyle-HorizontalAlign="Center" >

<ItemStyle HorizontalAlign="Center"></ItemStyle></asp:BoundField>

<asp:BoundField DataField="P_on" HeaderText="是否开启" SortExpression="P_on" ItemStyle-HorizontalAlign="Center" >

<ItemStyle HorizontalAlign="Center"></ItemStyle></asp:BoundField>

<asp:BoundField DataField="P_lasttime" HeaderText="最后发送时间" SortExpression="P_lasttime" ItemStyle-HorizontalAlign="Center" >

<ItemStyle HorizontalAlign="Center"></ItemStyle></asp:BoundField>

<asp:BoundField DataField="P_memo" HeaderText="备注" SortExpression="P_memo" ItemStyle-HorizontalAlign="Center" >

<ItemStyle HorizontalAlign="Center"></ItemStyle></asp:BoundField>

</Columns>

<EmptyDataTemplate>

没有数据!

</EmptyDataTemplate>

<PagerTemplate>

<table width="100%" class="gvPage" style="font-size:12px">

<tr>

<td style="text-align: right">

第<asp:Label ID="lblPageIndex" runat="server" Text='<%# ((GridView)Container.Parent.Parent).PageIndex + 1 %>'></asp:Label>页

/共<asp:Label ID="lblPageCount" runat="server" Text='<%# ((GridView)Container.Parent.Parent).PageCount %>'></asp:Label>页

<asp:LinkButton ID="LinkButtonFirstPage" runat="server" CommandArgument="First" CommandName="Page" Visible="<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>">首页</asp:LinkButton>

<asp:LinkButton ID="LinkButtonPreviousPage" runat="server" CommandArgument="Prev" CommandName="Page" Visible="<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>">上一页</asp:LinkButton>

<asp:LinkButton ID="LinkButtonNextPage" runat="server" CommandArgument="Next" CommandName="Page" Visible="<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>">下一页</asp:LinkButton>

<asp:LinkButton ID="LinkButtonLastPage" runat="server" CommandArgument="Last" CommandName="Page" Visible="<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>">尾页</asp:LinkButton>

<asp:TextBox ID="txtNewPageIndex" runat="server" Text='<%# ((GridView)Container.Parent.Parent).PageIndex + 1 %>' Width="20px" AutoPostBack="true" ></asp:TextBox>

<asp:LinkButton ID="btnGoEx" runat="server" CommandArgument="GO" CommandName="Page" Text="GO" OnClick="btnGoEx_Click"></asp:LinkButton>

</td>

</tr>

</table>

</PagerTemplate>

</asp:GridView>

2、后端的话,由于需要d出删除前的确认框,所以,这里需要在RowDataBound里面做点逻辑,同时,要想真正的删除,还需要触发RowDeleting事件,具体代码如下:

//报警删除

protected void gridViewDxjk_RowDeleting(object sender, GridViewDeleteEventArgs e)

{

string key = gridViewDxjk.DataKeys[e.RowIndex].Value.ToString()

bool flag = bll.Delete(Int32.Parse(key))

if (flag)

NXT_WLService.App_Code.JScript.Alert("删除成功!", this)

else

NXT_WLService.App_Code.JScript.Alert("删除失败!", this)

}

protected void gridViewDxjk_RowDataBound(object sender, GridViewRowEventArgs e)

{

if (e.Row.RowType == DataControlRowType.DataRow)

{

LinkButton btn = (LinkButton)e.Row.Cells[1].Controls[0]

if (btn.Text.Equals("删除"))//删除钮才加提示讯息

btn.OnClientClick = "if (confirm('你确认要删除?')) javascript:__doPostBack('gridViewDxjk','Delete$" + e.Row.RowIndex.ToString() + "')else return false"

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/7875459.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-10
下一篇2023-04-10

发表评论

登录后才能评论

评论列表(0条)

    保存