关于repeater 动态添加行,保存画面上值的问题

GeneXus低代码平台践行者 GeneXus低代码平台践行者 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
各位朋友好。
我现在有一个添加的页面,需要添加明细信息,并且可以添加行数。
刚进入画面时,明显行的输入框都是空白的,输入后,点击保存。

页面代码(明显行的项目比较多,现在只列出一个:名称)

<asp:Repeater ID="m1Repeater" runat="server">
<tr>
<td><%#Container.ItemIndex+1%> </td>
<td><asp:TextBox ID="txtName" runat="server"></asp:TextBox></td>
</tr>
</asp:Repeater>

<asp:Button ID="btnAdd" runat="server" Text="添加一行" OnClick="btnAdd_Click" />


c#代码

//画面初始化事件
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//默认包含三行数据(分包商)
DataTable m1Dt = new DataTable();
for (int i = 0; i < 3; i++)
{
DataRow m1Dr = m1Dt.NewRow();
m1Dt.Rows.Add(m1Dr);
}

m1Repeater.DataSource = m1Dt;
m1Repeater.DataBind();
this.ViewState["M1"] = m1Dt;
}
}

//添加明细输入行
protected void btnAddSupplier_Click(object sender, EventArgs e)
{
DataTable dt = (DataTable)this.ViewState["M1"];
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);

m1Repeater.DataSource = dt;
m1Repeater.DataBind();

this.ViewState["M1"] = dt;
}



现在的问题就是 画面输入数据后,点击【添加一行】按钮,画面刷新,页面上之前输入的数据就全清空了,我现在也明白,问题就是出现在 添加一行时,重新绑定了 DataTable,把数据弄没了。 但我一直没想到什么好办法,能把输入的值保留下来。或者有没有其他的办法来处理 这种 输入多行数据的问题,不用repeater也可以。

请各位大侠多多指教。
...全文
评论 5
收藏 已收藏
分享
返回顶部