ASP.NET中如何實作repeater控制元件內顯示的資料在單元格內(即:<td>)直接可編輯,回車保存。不要每次選中行再點擊編輯按鈕彈出框編輯資料,同時獲得各個單元格的資料項資訊,等資料都添加完成后,點擊保存按鈕,取得全部資料更新資料庫(sqlserver )。
網上查有些jquery控制元件可實作相應功能,但沒找到完整的可參考實體,這塊不熟悉,還望高人指教,謝謝~
uj5u.com熱心網友回復:
頁面效果參考資料更新用ajax
uj5u.com熱心網友回復:
http://www.jeasyui.com/demo/main/index.php?plugin=DataGrid&theme=default&dir=ltr&pitem=看“Cell Editing in DataGrid”示例,不過服務器端還得你自己寫代碼
uj5u.com熱心網友回復:
動態生成,然后把值保存在DATATABLE中uj5u.com熱心網友回復:
<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="https://img.uj5u.com/2020/11/03/153262030623471.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="https://img.uj5u.com/2020/11/03/153262030623472.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="https://img.uj5u.com/2020/11/03/153262030623473.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="https://img.uj5u.com/2020/11/03/153262030623474.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="https://img.uj5u.com/2020/11/03/153262030623473.png" alt="" /><span class="btnText">保存</span></asp:LinkButton>
<asp:LinkButton ID="btnCancel" runat="server" OnClick="btnCancel_Click"><span class="btnText"><img src="https://img.uj5u.com/2020/11/03/153262030623474.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="https://img.uj5u.com/2020/11/03/153262030623475.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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/200553.html
標籤:JavaScript
