ASP.NET中如何实现repeater控件的单元格内数据直接编辑并保存至数据库

vita1982 2016-11-16 11:07:31
ASP.NET中如何实现repeater控件内显示的数据在单元格内(即:<td>)直接可编辑,回车保存。不要每次选中行再点击编辑按钮弹出框编辑数据,同时获得各个单元格的数据项信息,等数据都添加完成后,点击保存按钮,取得全部数据更新数据库(sqlserver )。
网上查有些jquery控件可实现相应功能,但没找到完整的可参考实例,这块不熟悉,还望高人指教,谢谢~
...全文
490 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChengCCccccc 2020-11-02
  • 打赏
  • 举报
回复

<div class="form-group">
<div class="col-md-12">
<div class="table-responsive" style="margin-bottom: 0px;">
<table border="0" cellpadding="0" cellspacing="1" class="table table-striped" style="min-width: 700px;">
<tr id="listHead" runat="server">
<th>PR Number</th>
<th>PR明细</th>
<th style="width: 70px;">数量</th>
<th style="width: 200px; text-align: right; padding-right: 30px;">单价<asp:Label ID="CurrencyView" runat="server" Text=""></asp:Label></th>
<th style="width: 160px;"> </th>
</tr>
<asp:Repeater ID="rep_Details" runat="server" OnItemDataBound="rep_Details_ItemDataBound">
<ItemTemplate>
<tr>
<td align="center" style="vertical-align: middle;">
<span style="display:none;"><asp:Label ID="lblContractDetailID" runat="server" Visible="false" Text='<%#Eval("ID")%>'></asp:Label></span>
<asp:Label ID="lblPRNumbers" runat="server" Text='<%#Eval("PRNumbers")%>'></asp:Label>
<asp:TextBox ID="r_PRNumbers" runat="server" Text='<%#Eval("PRNumbers")%>' Visible="false" ValidationGroup="rowEdit" ToolTip="PR Numbers"></asp:TextBox>
</td>
<td align="left" style="vertical-align: middle;">
<asp:Label ID="lblPRItem" runat="server" Text='<%#Eval("PRItem")%>'></asp:Label>
<asp:TextBox ID="r_PRItem" runat="server" Text='<%#Eval("PRItem")%>' Visible="false" ValidationGroup="rowEdit" ToolTip="PR明细"></asp:TextBox>
</td>
<td align="center" style="vertical-align: middle;">
<asp:Label ID="lblCount" runat="server" Text='<%#Eval("ContractCount")%>'></asp:Label>
<asp:TextBox ID="r_ContractCount" runat="server" Text='<%#Eval("ContractCount")%>' Visible="false" ValidationGroup="rowEdit" ToolTip="数量"></asp:TextBox>
</td>
<td align="right" style="text-align: right; padding-right: 30px; vertical-align: middle;">
<asp:Label ID="lblUnitPrice" runat="server" Text='<%#Eval("ContractUnitPriceView")%>'></asp:Label>
<asp:TextBox ID="r_ContractUnitPrice" runat="server" Text='<%#Eval("ContractUnitPrice")%>' Visible="false" ValidationGroup="rowEdit" ToolTip="单价"></asp:TextBox>
</td>
<td align="center" style="vertical-align: middle;">
<%-- https://www.cnblogs.com/lonelyxmas/p/3569810.html
UpdatePanel Repeater内LinkButton造成页面刷新问题
给LinkButton添加属性ClientIDMode="AutoID"
--%>
<asp:LinkButton ID="btnEditRow" runat="server" ClientIDMode="AutoID" OnClick="btnEditRow_Click" CommandArgument='<%#Eval("ID")%>'><img src="img/edit.png" alt="" /><span class="btnText">修改</span></asp:LinkButton>
<asp:LinkButton ID="btnDeleteRow" runat="server" ClientIDMode="AutoID" OnClientClick="javascript:return confirm('确认删除此条明细?');" OnClick="btnDeleteRow_Click" CommandArgument='<%#Eval("ID")%>'><img src="img/delete.png" alt="" /><span class="btnText">删除</span></asp:LinkButton>
<asp:LinkButton ID="btnConfirmUpdate" runat="server" ClientIDMode="AutoID" OnClick="btnConfirmUpdate_Click" CommandArgument='<%#Eval("ID")%>' Visible="false"><img src="img/ok.png" alt="" /><span class="btnText">确认</span></asp:LinkButton>
<asp:LinkButton ID="btnCancelUpdate" runat="server" ClientIDMode="AutoID" OnClick="btnCancelUpdate_Click" CommandArgument='<%#Eval("ID")%>' Visible="false"><img src="img/cancel.png" alt="" /><span class="btnText">取消</span></asp:LinkButton>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
<tr id="trNewRow" runat="server" visible="false" class="form-inline">
<td style="vertical-align: bottom;">
<asp:TextBox ID="PRNumbers" runat="server" ToolTip="PR Numbers" ValidationGroup="PRNewRow"></asp:TextBox>
</td>
<td>
<div class="col-lg-12" style="padding: 0px;">
<asp:TextBox ID="PRItem" runat="server" ValidationGroup="PRNewRow" ToolTip="PR明细" placeholder="请填写"></asp:TextBox>
</div>
</td>
<td style="vertical-align: bottom;">
<asp:TextBox ID="ContractCount" runat="server" ToolTip="数量" ValidationGroup="PRNewRow"></asp:TextBox>
</td>
<td style="vertical-align: bottom;">
<asp:TextBox ID="ContractUnitPrice" runat="server" ToolTip="单价" ValidationGroup="PRNewRow"></asp:TextBox>
</td>
<td style="vertical-align: bottom;">
<asp:LinkButton ID="btnAdd" runat="server" OnClick="btnAdd_Click"><img src="img/OK.png" alt="" /><span class="btnText">保存</span></asp:LinkButton>
  
<asp:LinkButton ID="btnCancel" runat="server" OnClick="btnCancel_Click"><span class="btnText"><img src="img/cancel.png" alt="" />取消</span></asp:LinkButton>
</td>
</tr>
<tr>
<td align="center" style="vertical-align: bottom;">
<asp:LinkButton ID="btnAddNewRow" runat="server" OnClick="btnAddNewRow_Click"><img src="img/add.png" alt="" /><span class="btnText">添加项目</span></asp:LinkButton>
</td>
<td colspan="4" align="right"> </td>
</tr>
</table>
</div>
</div>
</div>





protected void AddNewRowOrCancel(bool showRow)
{
trNewRow.Visible = showRow;
btnAddNewRow.Visible = !trNewRow.Visible;
ContractCount.Text = "";
ContractUnitPrice.Text = "";
PRNumbers.Text = "";
PRItem.Text = "";
}

protected void btnAddNewRow_Click(object sender, EventArgs e)
{
AddNewRowOrCancel(true);
}

protected void btnDeleteRow_Click(object sender, EventArgs e)
{
try
{
if (!(sender is LinkButton) || String.IsNullOrEmpty(((LinkButton)sender).CommandArgument))
{
return;
}
string detailid = ((LinkButton)sender).CommandArgument;
DataTable dtDetail = (DataTable)ViewState["dtDetail"];
DataRow deleteRow = dtDetail.Select("ID = " + detailid)[0];
if (dtDetail.Columns.Contains("ID"))
{
if (IntParse(deleteRow["ID"].ToString()) > 0)
{
int i = new VenderContractDetailDAL().DeleteDetail(deleteRow["ID"].ToString());
}
}
dtDetail.Rows.Remove(deleteRow);
ViewState["dtDetail"] = dtDetail;
rep_Details.DataSource = dtDetail;
rep_Details.DataBind();

CalculateAmount();
LoadApprovelList();
}
catch (Exception ex)
{
throw;
}
}

protected void rep_Details_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
try
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
if (e.Item.FindControl("btnEditRow") != null)
{
LinkButton btnEditRow = (LinkButton)e.Item.FindControl("btnEditRow");
btnEditRow.Visible
= String.IsNullOrEmpty(SubmitDate.Text.Trim())
&& CheckRole(RoleCmd.Update);
}
if (e.Item.FindControl("btn
ChengCCccccc 2020-11-02
  • 打赏
  • 举报
回复
动态生成,然后把值保存在DATATABLE中
  • 打赏
  • 举报
回复
http://www.jeasyui.com/demo/main/index.php?plugin=DataGrid&theme=default&dir=ltr&pitem= 看“Cell Editing in DataGrid”示例,不过服务器端还得你自己写代码
slwsss 2016-11-16
  • 打赏
  • 举报
回复
页面效果参考 数据更新用ajax
4.1 使用控件显示文本 实例 显示密码格式文本 实例 显示长日期格式时间 实例 显示金额格式文本 4.2 使用控件显示图片 实例 显示验证码图片 实例 动态显示用户头像 实例 使用网页对话框显示图片 实例 实现上传图片 实例 GridView控件显示商品缩略图 4.3 控件的超级链接 实例 ImageButton按钮超级链接查看商品详细信息 实例 GridView控件使用超级链接模板列查看详细信息 实例 DataList控件模板使用LinkButton查看详细信息 4.4 下拉列表框的应用 实例 间接改变DropDownList当前选项 实例 实现多个DropDownList控件的联动 实例 动态添加、删除DropDownList控件选项 4.5 单选按钮的应用 实例 性别选择 实例 网络考试系统单选题答案的选择 4.6 复选框的应用 实例 登录身份选择 实例 网络考试系统多选题答案的选择 4.7 控件连接数据源 实例 通过向导配置AccessDataSource 实例 通过向导配置SqlDataSource 实例 通过向导配置XmlDataSource 4.8 GridView控件的应用 实例 数据绑定并实现分页功能 实例 选编辑、取消、删除数据项 实例 GridView实现正反双项排序功能 实例 GridView控件DropDownList控件的绑定 实例 通过CheckBox删除选记录 实例 删除GridView控件行信息弹出确认提示框 实例 在GridView控件实现自动编号 实例 GridView控件实现主细表 实例 查看当前页详细信息 实例 单元格指定字符串固定长度 实例 供求信息网审核发布信息 实例 根据学生成绩合格与不合格显示不同颜色 4.9 DataList控件的使用 实例 绑定数据实现分页 实例 编辑DataList控件模板显示员工信息 实例 DataList控件实现主细表 实例 DataList控件实现删除功能 4.9 Repeater控件的使用 实例 Repeater控件数据绑定 实例 Repeater控件分页 实例 编辑Repeater控件标识商品信息

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧