2017-10-23 18 views
-1

私のradGridのデータをSQLに挿入しようとしています。私のradグリッドにはチェックボックスの列もありますので、チェックされた行をデータベースに挿入します。私は以下のコードを使用していますが、私にこのエラーを与えています: エラー30 'Telerik.Web.UI.RadGrid'に '行'の定義が含まれておらず、 'Telerik'型の最初の引数を受け入れる拡張メソッド 'Rows'がありません。 Web.UI.RadGrid 'が見つかりました(使用しているディレクティブまたはアセンブリ参照がありません)私は間違っていますか?行にアクセスするボイドSave2_Click(オブジェクト送信者、のEventArgs電子) {RadGridからsqlにデータを挿入するチェックボックス

  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 /> 
+1

あなたは[エラーを検索]しようとしていません(https://www.telerik.com/forums/radgrid-definition-for-quotrows-quot)。 – Reniuz

+0

私は結果はありませんでした。とにかくありがとうございました – Lara

答えて

0

保護

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

    } 

、そのDataItemsをループ。もっとAccessing Cells and Rowsについて

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

より良いアプローチは、SQLデータベースを更新するためにいくつかのパラメータを受け取るメソッドを作成することです。完了したら、RadGrid(Differences Between ItemCreated and ItemDataBound)の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 
} 
関連する問題