如何在ASP.NET与C#中将EDIT和DELETE列移至Remarks列之后
解决GridView编辑/删除按钮列移至Remarks列之后的问题
方法1:手动定义所有列(推荐)
你当前的GridView是自动生成列模式,CommandField会默认排在最左侧。关闭自动生成列,手动按顺序列出所有数据列,最后放置编辑/删除按钮列,就能精准控制布局。
修改前端GridView代码:
<asp:GridView ID="grdRDaily" runat="server" Visible="false" Width="356px" CssClass="table table-bordered" HorizontalAlign="Center" AutoGenerateColumns="false"> <%-- 关闭自动生成列 --%> <Columns> <%-- 按需求顺序添加所有数据列,替换为实际列名和标题 --%> <asp:BoundField DataField="列名1" HeaderText="列标题1" /> <asp:BoundField DataField="列名2" HeaderText="列标题2" /> <%-- ... 其他数据列依次添加 ... --%> <asp:BoundField DataField="Remarks" HeaderText="Remarks" /> <%-- Remarks列放在按钮前 --%> <%-- 最后放置编辑删除按钮列 --%> <asp:CommandField ShowEditButton="true" ShowDeleteButton="true" /> </Columns> </asp:GridView>
方法2:DataBind后动态调整列顺序
如果不想手动定义所有列,可以在后端数据绑定完成后,把CommandField列移到最后位置。
修改后端GetDailySummary方法,在grdRDaily.DataBind();之后添加以下代码:
// 定位到包含编辑/删除按钮的CommandField列 CommandField commandColumn = null; foreach (DataControlField col in grdRDaily.Columns) { if (col is CommandField cmdCol && cmdCol.ShowEditButton && cmdCol.ShowDeleteButton) { commandColumn = cmdCol; break; } } // 将找到的按钮列移至最后 if (commandColumn != null) { grdRDaily.Columns.Remove(commandColumn); grdRDaily.Columns.Add(commandColumn); }
重要提醒:修复SQL注入风险
你当前拼接SQL字符串的写法存在严重的SQL注入漏洞,建议改为参数化查询:
sqlComm = new SqlCommand("EXEC psp_RPTDaily @DATA, @FROMDATE, @TODATE", conn); sqlComm.Parameters.AddWithValue("@DATA", dataReport.SelectedValue.ToString()); sqlComm.Parameters.AddWithValue("@FROMDATE", txtStartDate.Text); sqlComm.Parameters.AddWithValue("@TODATE", txtEndDate.Text);
内容的提问来源于stack exchange,提问作者Mac
相关产品推荐
相关产品推荐

