Редактирование, удаление, обновление операций в SPgridview в sharepoint 2010 с использованием веб-частей
У меня есть список на моем сайте SharePoint с именем "Empdetails" и столбцами (строка EmpName, строка Empaddress).
Я должен привязать данные списка к SpGridview с редактированием, удалением, обновлением функциональности.
Я могу успешно привязать данные списка к просмотру сетки, но не могу предоставить функции редактирования, удаления и обновления вида сетки.
Код:
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();
}
2 ответа
Вам нужно будет написать весь код для обновления и удаления. Это не предоставляется автоматически.
Лично я бы рекомендовал использовать готовую веб-часть "Представление списка", которая указывает на представление таблицы, а не пытаться создать свою собственную.
Но если вам нужно написать собственный код, приведенный выше код может быть упрощен из этого:
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();
protected void Page_Load(отправитель объекта, EventArgs e) { 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();
}
}