2012-10-30 30 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(); 
    } 
} 
相關問題