newform.Aspx背后的代码?

时间:2011-05-05 16:13:26

标签: sharepoint-2010

我有一个列表,必须填写一些代码(预先填充一些字段,并在保存按钮上做一些工作。)

最好的方法是什么?

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?

1 个答案:

答案 0 :(得分:0)

您可以按照建议here添加代码隐藏。

但即使您输入了代码隐藏文件,您仍然无法从代码隐藏中引用窗体上的控件(字段,保存按钮等)。

我建议编写一个Web服务(asmx或WCF)并将其托管在Sharepoint实例上。 然后,您可以使用javascript和AJAX调用来执行初始化和验证。