Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 选中RadGrid中的复选框并将数据发送到数据库_C#_Asp.net_Oracle10g_Telerik_Radgrid - Fatal编程技术网

C# 选中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

我想要一个RADGRID中的复选框。具体要求如下:

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

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

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

<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();