1

在我的表格中,我有两种不同的保存方式:

“保存”通过回发将用户的输入存储到列表中,并允许在 jQueryUI 弹出对话框确认成功保存后进一步输入数据。

“SaveClose”通过回发将用户的输入存储到列表中,然后执行上下文回退以返回列表页面。

我的问题在于,如果用户执行“保存”然后执行“SaveClose”,每次保存都会创建一个新的列表项,从而创建 2 个项目。

在代码中,很明显会出现这种情况:

        public void SaveClose_Click(object sender, EventArgs e)
        {
            _ControlBinder.SaveToList(CurrentMode.Equals(FormMode.New), delegate(...) { ...}); Backout();
        }
        public void Save_Click(object sender, EventArgs e)
        {
            _ControlBinder.SaveToList(CurrentMode.Equals(FormMode.New), delegate(...) { ... });
            ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "tmp", "$(\"#savedDialog\").dialog(open);", true);
        }

只需单击“保存”,表单就会保存到列表中,但 FormMode 不会改变。我找到了ChangeMode功能,但没有让它工作。

有没有办法通过 C# 代码隐藏来改变表单的模式?(或者我可以使用除 CurrentMode.Equals(FormMode.New) 之外的更好的条件)

4

1 回答 1

0

构造了一个更好的条件来首先检查重复的列表,并确保在 SaveToList 被赋予 true 之前不存在另一个具有相同标题的文档。

新的条件是:

(CurrentMode.Equals(FormMode.New) && found.Count == 0)

where found 是通过 LINQ 语句创建的:

        SPList list = SPContext.Current.Web.Lists["ListName"];
        SPQuery query = new SPQuery();
        query.Query = @"
            <Where>
                <Eq>
                <FieldRef Name='Title' />
                <Value Type='Text'>" + Variable.ToString() + "</Value></Eq></Where>";
        SPListItemCollection found = list.GetItems(query);

我将继续寻找一种解决方案,它只是将 FormMode 更改为“编辑”而不是“新建”,但 LINQ 解决方案可确保不会创建重复项。

于 2012-07-11T20:04:45.747 回答