2012-10-30 46 views
2

我在我的SharePoint网站中名为“Empdetails”并具有列(EmpName字符串,Empaddress字符串)的列表。使用Webparts在Sharepoint 2010的SPgridview中编辑,删除和更新操作

我必须将列表数据与编辑,删除,更新功能绑定到SpGridview。

我能够将列表数据绑定到gridview成功,但我无法提供编辑,删除,更新功能到gridview。

代码:

private void binddata() 
{ 
    SPWeb mySite = SPContext.Current.Web; 
    SPList myList = mySite.Lists["Empdetails"]; 
    SPListItemCollection items = myList.Items; 

    //Here we will make a datatable and we will put our list data to the data table 
    DataTable table=new DataTable(); 
    table.Columns.Add("EmpName", typeof(string)); 
    table.Columns.Add("Empaddress", typeof(string));  

    // Create rows for each splistitem 
    DataRow row; 
    foreach (SPListItem result in items) 
    { 
     row = table.Rows.Add(); 
     row["EmpName"] = result["EmpName"].ToString(); 
     row["Empaddress"] = result["Empaddress"].ToString(); 

    } 
    //binding data to gridview 
    GridView1.DataSource = table.DefaultView; 
    GridView1.DataBind(); 
} 

回答

0

您将需要编写所有的代码进行更新和删除。它不会自动提供。

就个人而言,我会推荐使用开箱即用的列表视图Web部件,它指向数据表视图而不是试图创建自己的视图。

但是如果你必须编写自定义代码,上面的代码可能能够从这个简化:

DataTable table = new DataTable(); 
table.Columns.Add("EmpName", typeof(string)); 
table.Columns.Add("Empaddress", typeof(string));  
DataRow row; 
foreach (SPListItem result in items) 
{ 
    row = table.Rows.Add(); 
    row["EmpName"] = result["EmpName"].ToString(); 
    row["Empaddress"] = result["Empaddress"].ToString(); 
} 

这样:

DataTable table = items.GetDataTable(); 
+0

感谢我们的代码。但我需要的任何引用链接进行了解,以实现我的任务......我知道,这不是自动提供的...这就是易张贴了这个问题。 – user1716577

+1

在这种情况下,您需要提出更具体的问题。 Stackoverflow是为了问题和答案,而不是为你写你的项目。 –

+0

我不需要完整的代码。我只需要指导如何在gridview中实现curd操作。这就是为什么我在堆栈溢出中发布这个问题。 – user1716577

0

保护无效的Page_Load(对象发件人,EventArgs的) { if(!IsPostBack) { Bindata(); }}

public void Bindata() 
    { 
     SPWeb web = SPContext.Current.Web; 
     SPList list = web.Lists["VisualWebpart"]; 

     DataTable dt = new DataTable(); 
     dt.Columns.Add("Title", typeof(string)); 

     foreach (SPListItem item in list.Items) 
     { 
      DataRow dr = dt.NewRow(); 
      dr["Title"] = item["Title"].ToString(); 
      dt.Rows.Add(dr); 
     } 

     GridView1.DataSource = dt; 
     GridView1.DataBind(); 
    } 


    protected void grd_Insert(object sender, GridViewCommandEventArgs e) 
    { 
     if (e.CommandName == "Insert") 
     { 
      SPWeb currentWeb = SPContext.Current.Web; 
      SPList lst = currentWeb.Lists["VisualWebpart"]; 
      SPListItemCollection myColl = lst.Items; 
      TextBox txtTitle = (TextBox)GridView1.FooterRow.FindControl("txtTitle"); 
      SPListItem item = myColl.Add(); 
      item["Title"] = txtTitle.Text; 

      item.Update(); 
      txtTitle.Text = ""; 
      Bindata(); 
     } 

    } 

    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 
    { 

     GridView1.EditIndex = e.NewEditIndex; 
     Bindata(); 
    } 


    protected void GridView1_Cancel(object sender, GridViewCancelEditEventArgs e) 
    { 

     GridView1.EditIndex = -1; 
     Bindata(); 
    } 

    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) 
    { 

     GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex]; 
     int Title = row.DataItemIndex; 

     SPWeb currentWeb = SPContext.Current.Web; 
     SPList lst = currentWeb.Lists["VisualWebpart"]; 
     SPListItemCollection myColl = lst.Items; 
     int itemcount = myColl.Count; 


     for (int i = 0; i <= itemcount-1; i++) 
     { 
      SPListItem item = myColl[i]; 
      if (Title==i) 
      { 
       myColl.Delete(i); 
      } 
     } 

     Bindata(); 

    } 

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
    { 
     GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex]; 
     int Title = row.DataItemIndex; 

     SPWeb currentWeb = SPContext.Current.Web; 
     SPList lst = currentWeb.Lists["VisualWebpart"]; 
     SPListItemCollection myColl = lst.Items; 
     int itemcount = myColl.Count; 
     TextBox txtTit = (TextBox)GridView1.Rows[e.RowIndex].FindControl("txtTit"); 


     string d = txtTit.Text; 

     for (int i = 0; i <= itemcount - 1; i++) 
     { 
      SPListItem item = myColl[i]; 
      if (Title == i) 
      { 
       item["Title"] = d; 
       item.Update(); 

      } 
     } 
     GridView1.EditIndex = -1; 
     Bindata(); 
    } 
} 
相关问题