【发布时间】:2013-12-11 23:26:27
【问题描述】:
我是视觉工作室的新手。我有一个 Sharepoint 列表,其中包含以下字段组名、用户、部分和活动(这是一个复选框)。我有一个网格视图可视 Web 部件,它将从列表中检索值,我需要在网格视图中添加一个复选框。
当用户在网格视图中选中复选框并单击 Ok 按钮时,我希望 SharePoint 列表项 Active 更新为 True 或 Yes,取消选中并单击 Ok 为 False 或 No。
以下是我到目前为止所做的。我能够从列表中检索值。但是当我单击复选框时,我的 SharePoint 列表中没有任何更新。
<asp:GridView ID="GridView1" runat="server"
onselectedindexchanged="GridView1_SelectedIndexChanged" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Group Name" HeaderText="Group Name" />
<asp:BoundField DataField="User" HeaderText="User" />
<asp:BoundField DataField="Section" HeaderText="Section" />
<asp:TemplateField HeaderText="Action" ShowHeader="true" HeaderStyle-HorizontalAlign="Center" Visible="true" HeaderStyle-Font-Bold="true" HeaderStyle-ForeColor="#ad0015">
<ItemTemplate>
<asp:CheckBox ID="chkStatus" runat="server" AutoPostBack="true"
Width="100px"/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="">
<HeaderTemplate>
</HeaderTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Ok"
Width="119px" />
protected void Page_Load(object sender, EventArgs e)
{
GridView1.DataSource = GetData();
if (!Page.IsPostBack)
{
GridView1.DataBind();
}
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
}
DataTable GetData()
{
SPSite oSiteCollection = SPContext.Current.Site;
SPWeb oWeb = oSiteCollection.OpenWeb();
SPList oSPList = oWeb.Lists["sample"];
SPListItemCollection oSPListItemCollection = oSPList.Items;
DataTable dt = new DataTable();
try
{
dt.Columns.Add("Group Name", typeof(String));
dt.Columns.Add("User", typeof(String));
dt.Columns.Add("Section", typeof(String));
dt.Columns.Add("Active", typeof(bool));
dt.Columns.Add("ID", typeof(int));
DataRow dataRow;
foreach (SPListItem oSplistItem in oSPListItemCollection)
{
dataRow = dt.Rows.Add();
dataRow["Group Name"] = oSplistItem["Group Name"].ToString();
dataRow["User"] = oSplistItem["User"].ToString();
dataRow["Section"] = oSplistItem["Section"].ToString();
//dataRow["ID"] = oSplistItem["ID"].ToString();
// dataRow["Active"] = oSplistItem["Active"].ToString();
}
return dt;
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("Managers Approval" + ex.Message.ToString());
return dt;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView1.Rows)
{
// Access the CheckBox
CheckBox cb = (CheckBox)row.FindControl("chkStatus");
bool status = cb.Checked;
string strBoolean = Convert.ToString(status);
if (cb != null)
{
SPSite oSiteCollection = SPContext.Current.Site;
using (SPWeb oWeb = oSiteCollection.OpenWeb())
{
SPList oSPList = oWeb.Lists["sample"];
SPListItemCollection oSPListItemCollection = oSPList.Items;
foreach (SPListItem oSplistItem in oSPListItemCollection)
{
if (strBoolean == "True")
{
oSplistItem["Active"] = true;
}
else
{
oSplistItem["Active"] = false;
}
oSplistItem.Update();
}
}
}
【问题讨论】:
-
欢迎来到 Stackoverflow。请注意,Stackexchange 有一个解决所有 Sharepoint 相关问题的网站:sharepoint.stackexchange.com
-
有错误吗?
-
您还尝试更新特定项目吗?如果是,那么您需要添加带有列表项 ID 的隐藏输入字段,并在您选中的事件中获取此 ID 并仅更新具有此 ID 的项目。
-
我已经添加了输入字段。它是“活跃的”
-
我已经让它适用于一行,但它不适用于网格视图中的每一行。我将在上面添加修改后的代码
标签: c# asp.net sharepoint gridview