我有一个列表,必须填写一些代码(预先填充一些字段,并在保存按钮上做一些工作。)
最好的方法是什么?
THX
编辑:我最后在default.aspx上创建了一个自定义的webpart。在这个网络部分,我有一堆:
<table border="0" cellspacing="0" width="100%">
<tr>
<td width="190px" valign="top" class="ms-formlabel">
<h3 class="ms-standardheader">
<nobr>Title<span class="ms-formvalidation"> *</span>
</nobr>
</h3>
</td>
<td width="400px" valign="top" class="ms-formbody">
<SharePoint:FormField runat="server" id="fldTitle" ControlMode="New" FieldName="Title" ListId="{MyListID}" />
<SharePoint:FieldDescription runat="server" id="ff1description" FieldName="Title" ControlMode="New" ListId="{MyListID}"/>
</td>
</tr>
这是有效的,但我发现这有点痛苦,因为我必须阅读代码背后的每个表单字段:
private void Set(SPListItem item, string fieldInternalName, object fieldValue)
{
var field = item.Fields.GetFieldByInternalName(fieldInternalName);
item[fieldInternalName] = fieldValue;
}
protected void Btn_Ok_Click(object sender, EventArgs e)
{
SPWeb thisWeb = SPContext.Current.Web;
SPList myList= thisWeb.Lists["mylist"];
SPListItem newItem;
newItem= myList.Items.Add();
var router = thisWeb.EnsureUser(@"myuser");
Set(newItem, "Title", fldTitle.Value);
Set(newItem, "OtherField", fldOther.Value);
Set(newItem, "AnotherField", GetFromBusinessLogic());
SPUtility.Redirect(thisWeb.Url, SPRedirectFlags.Default, System.Web.HttpContext.Current);
newItem.Update();
}
有没有办法将所有这些包装在自定义表单容器中?也许是一个带有内部模板和代码隐藏事件的自定义ListFormWebPart?
答案 0 :(得分:0)
您可以按照建议here添加代码隐藏。
但即使您输入了代码隐藏文件,您仍然无法从代码隐藏中引用窗体上的控件(字段,保存按钮等)。
我建议编写一个Web服务(asmx或WCF)并将其托管在Sharepoint实例上。 然后,您可以使用javascript和AJAX调用来执行初始化和验证。