repeater 動態新增一行

2021-09-08 14:28:58 字數 4015 閱讀 5090

背景:有時候,需要為列表動態地新增一行,並且在後台**中能訪問到,即repeater在後台動態的新增一行(如果您只需要在前台用js新增一行,那本文不適合您的應用)。當然很多其它的控制項可以輕而易舉地做到,但顯示的樣式可能不是我們想要的,所以在這樣的情況下,我們需要用repeater做後台動態新增一行;

現狀:在網上主要有,用session來儲存狀態。額,拋開效能問題不說,這樣做也不能儲存在頁面上輸入的資料。所以這次主要實現的是實現儲存頁面上輸入的資料的狀態,並在後台動態地新增一行。

解決方法:在後台恢復頁面上的資料並存入datatable,然後為datatable新增一新行,並重新繫結;

前台**:

<

div

class

="datatable"

>

<

asp:hiddenfield

id="hfrptcolumns"

runat

="server"

value

="receiver,expense_amount,cut_payment_amount,acutal_amount,bank_no,bank_name"

/>

<

table

cellpadding

="1"

cellspacing

="0"

border

="1"

style

=" width:800px"

>

<

thead

>

<

tr>

<

th >

序號

th>

<

th>

收款人

th>

<

th>

報銷金額

th>

<

th>

扣款金額

th>

<

th>

實付金額

th>

<

th>

銀行賬號

th>

<

th>

開戶行

th>

tr>

thead

>

<

tbody

>

<

asp:repeater

id="rpttest"

runat

="server"

>

<

itemtemplate

>

<

tr>

<

td>

# container.itemindex+1

%>

td>

<

td><

asp:label

id="lblreceiver"

runat

="server"

text

='%>'>

asp:label

>

td>

<

td><

asp:textbox

id="txtexpenseamount"

runat

="server"

text

='%>'>

asp:textbox

>

td>

<

td><

asp:textbox

id="txtcutpaymentamount"

runat

="server"

text

='%>'>

asp:textbox

>

td>

<

td><

asp:label

id="lblacutalamount"

runat

="server"

text

='%>'>

asp:label

>

td>

<

td><

asp:label

id="lblbankno"

runat

="server"

text

='%>'>

asp:label

>

td>

<

td><

asp:label

id="lblbankname"

runat

="server"

text

='%>'>

asp:label

>

td>

tr>

itemtemplate

>

asp:repeater

>

tbody

>

table

>

<

div><

asp:button

id="btnaddnewrow"

runat

="server"

onclick

="btnaddnewrow_click"

text

="新增一行"

/>

div>

div>

後台**

protected

void page_load(object

sender, eventargs e)

}#region 繫結資料來源

//////繫結repeater的資料來源

/// private

void

binddata()

//////

生成測試資料

/// ///

private

void

loadtestdata(datatable dt)

//為第一行載入一些資料

datarow row0 = dt.rows[0

]; row0[

"receiver

"] = "

mike.jiang";

row0[

"expense_amount

"] = "

1000";

row0[

"cut_payment_amount

"] = "

300"

; row0[

"acutal_amount

"] = "

700"

; row0[

"bank_no

"] = "

325222222232522";

row0[

"bank_name

"] = "

建設銀行";

}//////

根據repeater相對應的列名,定義資料源datatable的schema

/// ///

列名 ///

public datatable definedatatableschema(string

columns)

return

dt; }

#endregion

#region 新增一行

protected

void btnaddnewrow_click(object

sender, eventargs e)

//新增一行

datarow row =dt.newrow();

dt.rows.add(row);

rpttest.datasource =dt;

rpttest.databind();

}#endregion

}

示例**:rpttest.rar

Repeater動態新增一行刪除一行

page language c autoeventwireup true codefile default2.aspx.cs inherits default2 cs public string fcode public string mystates protected void page loa...

Repeater動態新增行

id中文內容 英文內容 是否上傳聲音 新增時必填 頭像對話排序 最大時間 聲音時間 操作 container.itemindex 1 class form control class form control page currentpage pianzhangid pzid class btn b...

jquery刪除表單動態新增的某一行

jquery刪除表單某一行報錯 先刪除第一行,可正常刪除,再刪除第三行報錯 rows為表單陣列,index為刪除的陣列項 通過列印index,定位到問題原因是刪除第一項後,陣列長度變為2,此時刪除最後一項,index為2 rows 2 為undefined 解決方法 刪除一行後替換為空,保證索引正確...