[英]Repeating inputs vb.net
我正在vb.NET中編寫食譜書,但是在PHP中有背景知識。 我正在嘗試建立功能,以便在保存之前將多種成分添加到配方中。
在PHP中,我將具有一個自動完成的輸入和添加按鈕。 當按下添加按鈕時,配料將添加到配料列表中(配料ID帶有隱藏字段),然后在我發布食譜時,我將簡單地循環瀏覽發布數據並提取ID,如下所示:
<div id="ingredient-list">
<div>
<input type="hidden" name="ingredient[0]" value="32" />
<span>Potatoes</span>
</div>
</div>
<div>
<input type="text" onKeyUp="IngredientSearch(this)" />
<div id="food-search-results" class="auto-complete"></div>
</div>
foreach($_POST['ingredient'] as $ingredient) {
recipe.addIngredient($ingredient);
}
但是我不確定如何在.NET中完成這樣的任務。 當前,我的添加按鈕導致回發到頁面(我不想要)並將數據添加到asp:repeater。 任何人都可以向我指出正確的方向或提供代碼示例。
附帶一提,我的下一個任務是允許用戶上傳多個圖像。 它將具有幾乎相同的功能,但是只要將文件附加到現有輸入,就會添加一個新的文件輸入。
如果您不嘗試引起回發,則可以將該按鈕作為html按鈕進行操作,也可以將該按鈕和轉發器放在更新面板中。 這將導致部分回發。 這可能是更好的選擇,因為我認為您不能以其他方式更新asp:repeater。
正如Titopo所說,我建議您使用列表存儲ID,也可以使用數據集在Viewstate中存儲ID和文本值。
在按鈕上單擊,您可以執行以下操作...
Dim ds As DataSet
Dim dt As DataTable
If Not ViewState("Ingredients") Is Nothing Then
ds = ViewState("Ingredients")
dt = ds.Tables(0)
Dim dr As DataRow = dt.NewRow
dr.Item("IngredientID") = IngredientID' However you would get that.
dr.Item("Ingredient") = txtIngredient.Text
dt.Rows.Add(dr)
Else
ds = New DataSet
dt = New DataTable
dt.Columns.Add(New DataColumn("IngredientID"))
dt.Columns.Add(New DataColumn("Ingredient"))
Dim dr As DataRow = dt.NewRow
dr.Item("IngredientID") = IngredientID' However you would get that.
dr.Item("Ingredient") = txtIngredient.Text
ds.Tables.Add(dt)
ds.Tables(0).Rows.Add(dr)
End If
Dim dv As DataView = dt.DefaultView
dv.Sort = "Ingrediant ASC"
repIngrediants.DataSource = dv
repIngrediants.DataBind() ' -- Bind to your repeater here
ViewState("Ingredients") = ds
這將存儲每種成分的ID和文本。 如果在更新面板中具有此功能,則它將順利進行,並且僅使用按鈕,文本框和轉發器加載該部分。
ASP:Button
將始終導致回發。 我建議您在按下按鈕時存儲每種成分,但是,如果要將所有成分都發送為POST,則可以使用ViewState
存儲成分列表。
在Page_Load
事件上:
If Not Me.IsPostBack Then
ViewState("Ingredients") = New List(Of Integer)
End If
並在AddButton
OnClick
事件中:
Dim list = CType(ViewState("Ingredients"), List(Of Integer)
list.add(ingredient_id)
ViewState("Ingredients") = list
之后,您可以使用For Each
語句提取所有成分,形成字符串並將其作為POST變量發送。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.