C# 选中RadGrid中的复选框并将数据发送到数据库
我想要一个RADGRID中的复选框。具体要求如下: 我使用存储过程中的AutoGenerateColumns=“True”填充的所有radgrid列。我需要一个额外的复选框列。C# 选中RadGrid中的复选框并将数据发送到数据库,c#,asp.net,oracle10g,telerik,radgrid,C#,Asp.net,Oracle10g,Telerik,Radgrid,我想要一个RADGRID中的复选框。具体要求如下: 我使用存储过程中的AutoGenerateColumns=“True”填充的所有radgrid列。我需要一个额外的复选框列。 在网格加载期间,我没有/需要任何字段来绑定复选框 用户可以选中任意数量的复选框,第二列所选行的数据应发送到数据库 下面是我用来显示复选框的代码,但是完整的复选框列将被禁用 <MasterTableView CommandItemDisplay="None" HeaderStyle-BorderStyle="None
在网格加载期间,我没有/需要任何字段来绑定复选框 用户可以选中任意数量的复选框,第二列所选行的数据应发送到数据库 下面是我用来显示复选框的代码,但是完整的复选框列将被禁用
<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个新行应插入为:
ID值 a 44 55岁 a 66
提前谢谢 改用模板列:
<tel:GridTemplateColumn>
<ItemTemplate>
<asp:Checkbox id="chk" runat="server" />
</ItemTemplate>
</tel:GridTemplateColumn>
复选框列的问题是,它只显示供当前行编辑。它将为每一行显示一个复选框。我继续并遵循“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>
正如您看到的,此代码中引用了“ProductName”,因此您必须将其更改为列的名称
第五步:
在if(status)条件中插入将数据发送到DB所需的代码,以便它仅在您第一次检查时激发
注意:
如果需要从其他列获取数据,只需将列名添加到DataKeyNames=“column1,column2”字段,然后通过c#引用它们:
然后,您可以将这些值连接到您可以使用的任何DB代码中
我不知道Oracle,但我添加到if(状态)中的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();
这是一个基本的更新,但您应该了解如何将其应用到代码中,从而将其插入到表中。您是否检查了网格属性?是否将其设置为readonly=false和editRow=true?我在RADGRID中找不到这两个属性。但这意味着我没有将其设置为不可编辑模式?我需要所有复选框在加载时可编辑,而不是单击“编辑”按钮。选中此链接我将问题解释为如何使用autogeneratecolumns=“true”执行此操作。我有一个类似的问题,但我的数据源来自csv文件,我不想硬编码列。
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)
{
}
}
string value1 = item.GetDataKeyValue("column1").ToString();
string value2 = item.GetDataKeyValue("column2").ToString();
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();