gpt4 book ai didi

c# - 如何检查 Gridview 中的 CheckBoxField 是否被选中?

转载 作者:太空宇宙 更新时间:2023-11-03 14:22:06 25 4
gpt4 key购买 nike

我有一个带有 GridView 的网络表单。在这个 GridView 中,我有一个数据绑定(bind)的 CheckBoxField。我还有一个数据绑定(bind)字段,它是可编辑的,带有状态代码 (order-statuscode)。

我想要实现的是:

如果用户编辑一行并选中复选框,则需要为状态代码分配一个新值,以防用户也忘记更新状态代码。

ASP.Net:

<asp:GridView ID="gvRestordrer" runat="server" DataSourceID="basketConn2" AutoGenerateColumns="False" DataKeyNames="k_ordre_id" CssClass="gvBasket" GridLines="None" Width="706px" AllowPaging="true" PageSize="10" OnRowEditing="getOrderDetails" OnRowCancelingEdit="clearOrderDetails" OnRowUpdating="clearOrderDetails">
<RowStyle CssClass="gvRow" />
<Columns>
...
// BoundField with statuscode. This value need to be updated on rowupdating, if Checkboxfield has been checked by the user
<asp:BoundField DataField="k_order_statuscode" HeaderText="Statuscode" SortExpression="k_order_statuscode" >
<HeaderStyle CssClass="gvHeader" />
</asp:BoundField>
// Checkboxfield bound to a database bool "k_order_completed"
<asp:CheckBoxField DataField="k_order_completed" HeaderText="Completed?" SortExpression="k_order_completed" >
<HeaderStyle CssClass="gvHeader" />
</asp:CheckBoxField>
// Commandfield
<asp:CommandField DeleteText="" EditText="Handle Order" ShowDeleteButton="True" ShowEditButton="True" UpdateText="Update Order" >
<HeaderStyle CssClass="gvHeader" />
</asp:CommandField>
...
</asp:GridView>

C# 的东西:

protected void clearOrderDetails(object sender, GridViewUpdateEventArgs e)
{
lblOrdreDetaljer.Text = "";
int index = Convert.ToInt32(e.RowIndex);

// Not working
if (gvRestordrer.Rows[index].Cells[4].Value == true)
{
basketConn2.UpdateParameters["k_order_statuscode"].DefaultValue = "4";
}
}

除了制作 TemplateField 并在其中使用复选框之外,还有其他解决方案吗?我想应该有更简单的方法,但 Google 没有给我答案。

如有任何帮助,我们将不胜感激。

最佳答案

这可能不适用于数据绑定(bind)复选框,但这是我对 gridview 中的复选框的处理方式。

到目前为止,我已经能够通过以下方式获取已检查的项目:

将复选框添加到 gridview:

 internal static void AddCheckboxes(System.Web.UI.WebControls.GridView gv,IEnumerable<int> checkedRows)
{
foreach (var item in gv.Rows.Cast<System.Web.UI.WebControls.GridViewRow>().Select(c => c.Cells[0]).Where(cell => cell.Controls.Count == 0).WithIndex())
item.Item1.Controls.Add(new System.Web.UI.WebControls.CheckBox() { ClientIDMode = System.Web.UI.ClientIDMode.Static, ID = "ckUpdate" + item.Item2, Checked = checkedRows != null && checkedRows.Contains(item.Item2) });
}

然后在我使用的回发中

 internal static IEnumerable<int> GetCheckedRows(IEnumerable<string> paramKeys)
{
return paramKeys
.Where(f => f.Contains("$"))
.Where(f => System.Text.RegularExpressions.Regex.IsMatch(f, "ckUpdate[0-9]+$"))
.Select(p => int.Parse(System.Text.RegularExpressions.Regex.Match(p, "[0-9]+$").Value));

}

然后调用

 GetCheckedRows(Request.Params.AllKeys).ToList();

helper :

public static IEnumerable<Tuple<T, int>> WithIndex<T>(this IEnumerable<T> enumerable)
{
return enumerable.Select((item, index) => Tuple.Create(item, index));
}

关于c# - 如何检查 Gridview 中的 CheckBoxField 是否被选中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5079043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com