用于同时选择和编辑数据的解决方案

时间:2011-10-04 21:47:02

标签: c# jquery asp.net

我在c#中有一个asp.net应用程序。

我在sql server数据库中有一个表,有两个字段:

Field1
Comments

我需要允许用户选择Field1并为该特定Field1添加评论

然后用户将输入发回服务器

我该如何做到这一点?我可以使用哪种控件?是否有一个简单的jquery解决方案?

2 个答案:

答案 0 :(得分:2)

我会将可能的选择放在下拉列表中,然后使用jquery发出JSON请求以从控制器获取数据,然后使用一个保存按钮调用另一个javascript函数将修改后的数据发送回控制器。

控制器:

public ActionResult GetFields()
{
var model=new MyModel();
model.Selections =(from m in database.table select m.Field1).ToList();
return View(model);
}

public ActionResult GetComments(string field1)
{
return Content((from c in database.table where(c.Field1==field1)select c.Comments).First());
}

[HttpPost]
public void SaveComments(string field1, string comments)
{
var record=(from r in database.table where(r.Field1==field1)select r).First();
record.Comments=comments;
database.SaveChanges;
return;
}

视图:

<script type="text/javascript>
function SaveComments(){
var url='@Url.Action("GetComments","YourControllerName");
url+='?field1='+$('#selections option:selected').text();
$('#selectedField').text($('#selections option:selected').text());
$('#commentEditor').load(url);
};

function SaveComments(){
var url='@Url.Action("SaveComments","YourControllerName")';
url+='?field1='+$('#selections option:selected').text()+'&comments='+$('#commentEditor').text();
$('#dummy').load(url);
};
</script>

<select id="selections" onchange="SelectionChanged()">
@foreach(var item in Model.Selections)
{
<option value="@item">@item</option>
}
</select>
<div id="selectedField"/>
<input type="text" id="commentEditor"/>
<input type="button" value="apply" onclick="SaveComments()"/>
<div id="dummy"/>

免责声明:此处可能存在小错误(通常不会在文本框中写入大块代码:P),您可能不应该使用虚拟div,并且您需要在视图模型上使用基于“选择”中的值返回get的列表。这应该会给你一般的想法。

答案 1 :(得分:1)

这完全取决于您的网站设置。但是,如果您有一个Field1值列表并将它们放在DropDownList中,您将能够选择一个并在框中添加注释。

这在很大程度上取决于您的用户界面/工作流程。这只是许多可能的方法之一。

代码前端

<asp:DropDownList ID="ddlField1" runat="server">
    <asp:ListItem>Value1</asp:ListItem>
    <asp:ListItem>Value2</asp:ListItem>
    <asp:ListItem>Value3</asp:ListItem>
    <asp:ListItem>Value4</asp:ListItem>
</asp:DropDownList>
<asp:TextBox ID="tbComments" runat="server" TextMode="MultiLine"></asp:TextBox>
<asp:Button ID="btSubmit" runat="server" OnClick="btSubmit_Click"></asp:Button>

<asp:SqlDataSource ID="sqlRecord" runat="server"
    InsertCommand="InsertRecord" InsertCommandType="StoredProcedure">
    <InsertParameters>
        <asp:Parameter Name="Field1" Type="String" />
        <asp:Parameter Name="Comment" Type="String" />
    </InsertParameters>
</asp:SqlDataSource>

背后的代码

public void btSubmit_Click(object sender, EventArgs e)
{
  // Do your validation of the data here
  ..

  // Add fields and insert
  sqlRecord.InsertParameters["Field1"].DefaultValue = ddlField1.SelectedValue;
  sqlRecord.InsertParameters["Comment"].DefaultValue = tbComment.Text;
  sqlRecord.Insert();
}

这是未经测试的部分伪代码,但应该让您为正常的非MVC Web应用程序找到正确的方向。此外,它不使用任何JavaScript / jQuery,只使用ASP.NET和C#。