gpt4 book ai didi

c# - RadGrid 中的复选框和将数据发送到数据库

转载 作者:行者123 更新时间:2023-11-30 19:03:00 25 4
gpt4 key购买 nike

我想要 RADGRID 中的复选框。详细要求如下:

我正在使用存储过程中的 AutoGenerateColumns="True"填充所有 radgrid 列。我需要一个额外的复选框列。
在网格加载期间,我没有/不需要任何字段来绑定(bind)复选框。

用户可以勾选任意数量的复选框,所选行的第二列数据应发送到数据库。

以下是我用来显示复选框的代码,但完整的复选框列即将被禁用。

<MasterTableView CommandItemDisplay="None" HeaderStyle-BorderStyle="None">  
<Columns>
<rad:GridCheckBoxColumn HeaderText="LinkRisk" AllowFiltering="false" ReadOnly="false" HeaderStyle-Width="3%">
</rad:GridCheckBoxColumn>
</Columns>
</MasterTableView>

我需要帮助:
1.获取复选框。
2. 如何向数据库发送数据。
3.如何保存到数据库中。

假设 radgrid 的第 4、5、6 行被选中。
我需要发送这些行中第二列的数据,例如 44、55、66。
所以在我的数据库中,我的表的 3 个新行应该插入为:
标识值一个 44一个 55一个 66

提前致谢!

最佳答案

我继续并遵循“Emaad Ali”的评论来帮助您找到解决方案。

第 1 步:

创建你的 Radgrid。 (我使用 Northwind 数据库作为数据源,因为它很简单,应该很容易跟进。)在你认为“代码过载”之前,只需使用 visual studio 的向导连接到你的数据源,它将生成下面的大部分代码根据您想要的数据为您服务。

<telerik:RadGrid ID="RadGrid1" runat="server" CellSpacing="0" 
DataSourceID="SqlDataSource1" GridLines="None">
<MasterTableView AutoGenerateColumns="False" DataKeyNames="ProductID, ProductName"
DataSourceID="SqlDataSource1">
<CommandItemSettings ExportToPdfText="Export to PDF"></CommandItemSettings>

<RowIndicatorColumn FilterControlAltText="Filter RowIndicator column">
<HeaderStyle Width="20px"></HeaderStyle>
</RowIndicatorColumn>

<ExpandCollapseColumn FilterControlAltText="Filter ExpandColumn column">
<HeaderStyle Width="20px"></HeaderStyle>
</ExpandCollapseColumn>

<Columns>
<telerik:GridBoundColumn DataField="ProductID" DataType="System.Int32"
FilterControlAltText="Filter ProductID column" HeaderText="ProductID"
ReadOnly="True" SortExpression="ProductID" UniqueName="ProductID">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="ProductName"
FilterControlAltText="Filter ProductName column" HeaderText="ProductName"
SortExpression="ProductName" UniqueName="ProductName">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="SupplierID" DataType="System.Int32"
FilterControlAltText="Filter SupplierID column" HeaderText="SupplierID"
SortExpression="SupplierID" UniqueName="SupplierID">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="UnitPrice" DataType="System.Decimal"
FilterControlAltText="Filter UnitPrice column" HeaderText="UnitPrice"
SortExpression="UnitPrice" UniqueName="UnitPrice">
</telerik:GridBoundColumn>
<telerik:GridTemplateColumn HeaderText="Update">
<ItemTemplate>
<asp:CheckBox ID="CheckBox2" runat="server" AutoPostBack="true" OnCheckedChanged="CheckBox2_CheckedChanged" />
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>

<EditFormSettings>
<EditColumn FilterControlAltText="Filter EditCommandColumn column"></EditColumn>
</EditFormSettings>
</MasterTableView>

<FilterMenu EnableImageSprites="False"></FilterMenu>

<HeaderContextMenu CssClass="GridContextMenu GridContextMenu_Default"></HeaderContextMenu>
</telerik:RadGrid>

第 2 步:在从您的数据源自动生成的列之后添加以下列。如果您查看步骤 1 中的代码,您会看到我已经添加了它。您可以逐字复制并粘贴下面的代码,它会起作用。

<telerik:GridTemplateColumn HeaderText="Update"> 
<ItemTemplate>
<asp:CheckBox ID="CheckBox2" runat="server" AutoPostBack="true" OnCheckedChanged="CheckBox2_CheckedChanged" />
</ItemTemplate>
</telerik:GridTemplateColumn>

此时运行时,网格将如下所示:

A Walkthrough for your convienience第 3 步:在网格属性下的 DataKeyNames=""字段中,您需要添加要从中读取数据的列的名称。你说你想要第二列的数据,所以我也使用了第二列。在 Radgrid 中,我的第二列有 DataField="ProductName",因此我需要将其添加到我的网格的 DataKeyNames 属性中,使其成为 DataKeyNames="ProductName"。这将允许我们在步骤 4 中的 c# 代码中读取该列中的数据。

第 4 步:

转到后面的代码并粘贴此代码:

protected void CheckBox2_CheckedChanged(object sender, EventArgs e)
{
CheckBox chk = (CheckBox)sender;
bool status = chk.Checked;
GridDataItem item = (GridDataItem)chk.NamingContainer;
string keyvalue = item.GetDataKeyValue("ProductName").ToString();
string connectionString ="";
if(status)
{

}
}

如您所见,此代码中引用了“ProductName”,因此您必须将其更改为您的列的名称。

第 5 步:

在 if(status) 条件中插入将数据发送到您的数据库所需的代码,以便它仅在您第一次检查时触发。

注意:

如果您需要从其他列获取数据,您需要做的就是将列名添加到 DataKeyNames="column1,column2"字段中,然后通过 C# 引用它们:

string value1 = item.GetDataKeyValue("column1").ToString();
string value2 = item.GetDataKeyValue("column2").ToString();

然后您可以将这些值连接到您可能使用的任何数据库代码中。

我不知道 Oracle,但我添加到 if(Status) 的 SQL 代码如下所示:

    SqlConnection SqlConnection = new SqlConnection(connectionString);
SqlCommand SqlCommand = new SqlCommand();
SqlCommand.CommandText = "update products set [UnitPrice] = '100' where [ProductName] = '" + keyvalue + "'";
SqlCommand.Connection = SqlConnection;
SqlConnection.Open();
SqlCommand.ExecuteNonQuery();
SqlConnection.Close();

这是一个基本的更新,但您应该了解如何将其应用到将其插入表格的代码中。

关于c# - RadGrid 中的复选框和将数据发送到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7432355/

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