使用相同功能的多个表单

时间:2015-11-24 11:37:07

标签: c# asp.net webforms

我正在使用asp.net webforms中的Todolist。

我让列表中的项目一个接一个地呈现:

<asp:Panel ID="todoItem" runat="server" DefaultButton="updateItem" CssClass="tdLstItemWrapper">
    <div class="tdLstItemInfo">
        <p class="itemHeader">Clean</p>
        <p class="itemDesc">Clean kitchen</p>
    </div>
    <div class="tdLstItemForm edit">
      <asp:HiddenField ID="todoItemID" runat="server" Value="37"/>
      <asp:TextBox ID="empSign" runat="server"></asp:TextBox>
      <asp:Button ID="updateItem" runat="server" Text="OK" OnClick="updateItem_Click" />
    </div>
</div>

让我说我的更新功能就像这样简单:

protected void updateItem_Click(object sender, EventArgs e)
{
    Response.Write(todoItemID.Value + " - " + empSign.Text)
}

这里的第一个问题当然是我的面板,hiddelfield,文本框和不同项目按钮的ID不能相同。我可以为每个控件添加一个ID,如下所示:

<asp:HiddenField ID="todoItemID37" runat="server" Value="37"/>

但如果我这样做那么我将如何能够为所有项目使用相同的功能?

我希望能够在ASP Classic中做一些你可以在网页上有多个表单的地方,其中每个表单都可以有一个带有名称的字段,当发布时你可以在一个函数中请求一个。 / p>

这样的事情:

form.html:

<form action="save.asp" method="post">
<input type="text" name="username">
</form>

save.asp

<%
Response.Write(Request.Form("username"))
%>

在asp.net中我可以使用Request.Form.GetValues("username")来实现这样的目标,如果我而不是使用<asp:>使用html版本<input>。但在这种情况下,它将为我提供一个包含名称username的所有文件的数组,该名称包含在我的webforms <form>标记中,而不仅仅是ASP Classic中返回的那个文件,因为它是唯一包含在其中的文件表单,即使它可能是该页面上另一种形式的字段名为username。因此,对于我的隐藏字段,其中每个字段都有值,这不起作用,在另一个字段上,我可以执行类似这样的操作来获取empSign,因为此时只有一个项目将被更新,并且只有一个empSign字段将签署:

string empSignValue = Request.Form.GetValues("empSign").Where(value => value != "").ToArray().First().ToString();

修改

我没有使用<asp:ListView>的原因是我真的不知道如何解决它。澄清页面布局是这样的:

Screenshoot of layout

我有三个清单:

List<todoList> tdLst = todoUtils.getLists(todoListID);
List<todoItem> tdItemLst = todoUtils.getItems(Convert.ToInt32(todoListID);
List<todoCat> tdCatLst = todoUtils.getCats(todoListID);

项目可以是root(todoCatID = 0)或属于某个类别。每个列表可以有多个类别。我在我的tdCatLst上做了一个foreach来通过类别并挑选我使用的每个类别的项目:

var tdItems = tdItemLst.Where(item => item.todoCatID == todoCatID).ToList();

但是我如何通过listview实现这一目标?如果制作一个listview并将tdLst列表绑定到它并循环我的根项目,我需要一个listview用于我的类别和listview中的listview我的项目?或者我该怎么做呢?

我有点卡在这里。非常感谢任何帮助。

0 个答案:

没有答案