簡體   English   中英

使用復選框從 RadGrid 在 sql 中插入數據

[英]Inserting data in sql from RadGrid with check box

我正在嘗試從我的 radGrid 插入數據到我的 sql 中。 在我的 rad 網格中,我也有一個復選框列,所以我希望將選中的行插入到我的數據庫中。 我正在使用下面的代碼,但給了我這個錯誤:錯誤 30 'Telerik.Web.UI.RadGrid' 不包含 'Rows' 的定義,並且沒有擴展方法 'Rows' 接受類型為 'Telerik.Web 的第一個參數。可以找到 UI.RadGrid'(您是否缺少 using 指令或程序集引用?)知道我哪里做錯了???

  protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            this.BindGrid();
        }
    }

    private void BindGrid()
    {
        string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
        using (SqlConnection con = new SqlConnection(constr))
        {
            using (SqlCommand cmd = new SqlCommand("SELECT [ReportId], [Report], [IsSelected] FROM Hobbies"))
            {
                using (SqlDataAdapter sda = new SqlDataAdapter())
                {
                    cmd.Connection = con;
                    sda.SelectCommand = cmd;
                    using (DataTable dt = new DataTable())
                    {
                        sda.Fill(dt);
                        RadGrid1.DataSource = dt;
                        RadGrid1.DataBind();
                    }
                }
            }
        }
    }

    protected void Rows()
    {

    }

protected void Save2_Click(object sender, EventArgs e) {

            try
            {

                SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["Rights"].ConnectionString);

                string insert = "insert into Rights(Name,Mbiemri,Gjinia,Departamenti,Mosha,IntRights,Transferta,Depozita,Rapore) values (@Name,@Mbiemri,@Gjinia,@Departamenti,@Mosha,@IntRights,@Transferta,@Depozita,@Rapore)";
                SqlCommand cnd = new SqlCommand(insert, con);
                con.Open();
                foreach (GridViewRow row in RadGrid1.Rows)
                {
                    //Get the HobbyId from the DataKey property.
                    int ReportID = Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Values[0]);

                    //Get the checked value of the CheckBox.
                    bool isSelected = (row.FindControl("chkSelect") as CheckBox).Checked;

                    //Save to database
                    cmd.Parameters.Clear();
                    cmd.Parameters.AddWithValue("@ReportId", ReportID);
                    cmd.Parameters.AddWithValue("@IsSelected", isSelected);
                    cmd.ExecuteNonQuery();
                }
                cnd.Parameters.AddWithValue("@Name", TextBox1.Text);
                cnd.Parameters.AddWithValue("@Mbiemri", TextBox2.Text);
                cnd.Parameters.AddWithValue("@Gjinia", RadioButtonList1.SelectedValue);
                cnd.Parameters.AddWithValue("@Departamenti", SelectDepartament.SelectedItem.Text);
                cnd.Parameters.AddWithValue("@Mosha", RadDropDownList1.SelectedItem.Text);
                cnd.Parameters.AddWithValue("@IntRights", RadDropDownList2.SelectedItem.Text);
                cnd.Parameters.AddWithValue("@Transferta", TransfertaBtn.SelectedValue);
                cnd.Parameters.AddWithValue("@Depozita", DepoziteBtn.SelectedValue);


                cnd.ExecuteNonQuery();

                Response.Redirect("Home.aspx");

                con.Close();

            }

            catch (Exception ex)
            {


            }


telerik:RadGrid ID="RadGrid1" 
                       runat="server" AllowMultiRowSelection="True" AllowPaging="True"  DataSourceID="SqlDataSource1" GridLines="Both" PageSize="5" >
                       <GroupingSettings CollapseAllTooltip="Collapse all groups" />
                       <ClientSettings>
                           <Selecting AllowRowSelect="True" />
                       </ClientSettings>
                       <MasterTableView>
                           <Columns>
                               <asp:TemplateField>
                               <ItemTemplate>
                                    <asp:CheckBox ID="chkSelect" runat="server" Checked='<%# Eval("IsSelected") %>' />
                               </ItemTemplate>
                                   </asp:TemplateField>
                               <asp:BoundField DataField="Report" HeaderText="Report" ItemStyle-Width="150px" />

                               </telerik:GridTemplateColumn>
                           </Columns>
                       </MasterTableView>
                   </telerik:RadGrid>

                   <asp:SqlDataSource ID="SqlDataSource1" runat="server"
                        ConnectionString="<%$ ConnectionStrings:AdventureWorks2014ConnectionString %>" SelectCommand="SELECT [ReportID], [Report] FROM [Report]"></asp:SqlDataSource>
                   <br />

要訪問行,請遍歷其數據項。 有關訪問單元格和行的更多信息

protected void Button1_Click(object sender, EventArgs e)
{
    foreach (GridDataItem row in RadGrid1.Items)
    {
        string rowValue = row["ColumnUniqueName"].Text;
    }
}

更好的方法是創建一個需要很少參數的方法來更新 SQL 數據庫。 完成后, 在 RadGrid的 ItemDataBound 事件中調用它( ItemCreated 和 ItemDataBound 之間的差異)。 在這種情況下,您可以訪問行及其單元格,獲取必要的值並逐行更新數據庫。

bool IsClicked = false;
protected void Button1_Click(object sender, EventArgs e)
{
    IsClicked = true;
    RadGrid1.Rebind();
}

protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
    if (IsClicked && e.Item is GridDataItem)
    {
        updateDatabase(((GridDataItem)e.Item)["ColumnUniqueName"].Text);
    }
}

protected void updateDatabase(string field)
{
    // update SQL
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM