- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好,我在 MVC 3 的一个部分有两个数据表,一个显示 Table_1,另一个在底部显示 Table_2。我想要这样的功能,当我双击数据表 1(在行)时,它将弹出数据表 2 formAddNewRow。有什么办法可以做到这一点?加上 Datatables 1 ID 将被发送到弹出表单。
目前我的局部 View 确实有这个:
<script type="text/javascript">
$(document).ready(function () {
$('#myItemPrice').dataTable({
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": '../AjaxItemPriceProvider?id=@ViewBag.ID',
"sPaginationType": "full_numbers",
"aoColumns": [
{ "sName": "ID",
"bSearchable": false,
"bSortable": false,
"bVisible": true
},
{ "sName": "PDSID",
"bSearchable": false,
"bSortable": false,
"bVisible": false
},
{ "sName": "PID" },
{ "sName": "EffDate" },
{ "sName": "ExpDate" },
{ "sName": "G140" },
{ "sName": "AccID" },
{ "sName": "CCID" }
]
});
});
$(document).ready(function () {
$('#myTierPrice').dataTable({
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": '../AjaxTierPriceProvider?id=@ViewBag.ID',
"sPaginationType": "full_numbers",
"aoColumns": [
{ "sName": "ID",
"bSearchable": false,
"bSortable": false,
"bVisible": false
},
{ "sName": "IPFID",
"bSearchable": false,
"bSortable": false,
"bVisible": false
},
{ "sName": "Quantity" },
{ "sName": "Amount" },
{ "sName": "Maximum Discount Percentage" },
{ "sName": "Maximum Discount Amount" },
{ "sName": "Tax 1" },
{ "sName": "Tax 2" },
{ "sName": "Commission" }
]
}).makeEditable({
sUpdateURL: "../TierPriceUpdate",
sAddURL: "../TierPriceAdd",
sDeleteURL: "../TierPriceDelete"
});
});
</script>
<div class="clear">
</div>
<div id="itemPrice">
<h2>Item Pricing List</h2>
<table id="myItemPrice" class="display">
<thead>
<th>
ID
</th>
<th>
PDSID
</th>
<th>
PID
</th>
<th>
Effective Date
</th>
<th>
Expiry Date
</th>
<th>
G140
</th>
<th>
AccID
</th>
<th>
CCID
</th>
</thead>
<tbody>
</tbody>
<tfoot>
<th>
ID
</th>
<th>
PDSID
</th>
<th>
PID
</th>
<th>
Effective Date
</th>
<th>
Expiry Date
</th>
<th>
G140
</th>
<th>
AccID
</th>
<th>
CCID
</th>
</tfoot>
</table>
</div>
<div class="clear"></div><br />
<div id="itemPrice">
<h2>Item Tier Price List</h2>
<table id="myTierPrice" class="display">
<thead>
<th>ID</th>
<th>IPFID</th>
<th>Quantity</th>
<th>Amount</th>
<th>Maximum Discount Percentage</th>
<th>Maximum Discount Amount</th>
<th>Tax 1</th>
<th>Tax 2</th>
<th>Commission</th>
</thead>
<tbody>
</tbody>
<tfoot>
<th>ID</th>
<th>IPFID</th>
<th>Quantity</th>
<th>Amount</th>
<th>Maximum Discount Percentage</th>
<th>Maximum Discount Amount</th>
<th>Tax 1</th>
<th>Tax 2</th>
<th>Commission</th>
</tfoot>
</table>
</div>
<div>
<button id="btnAddNewRow" value="Ok">
Add New Tier Price</button>
<button id="btnDeleteRow" value="cancel">
Delete Tier Price</button>
</div>
<form id="formAddNewRow" action="#" title="New Tier Price Settings">
<input type="hidden" name="ID" id="ID" value="-1" rel="0" />
<label>
Price ID</label><br />
<input type="text" name="IPFID" id="IPFID" rel="2" /><br />
<br />
<label>
Quantity</label><br />
<input type="text" name="Qty" id="Qty" rel="2" /><br />
<br />
<label>
Amount</label><br />
<input type="text" name="Amt" id="Amt" rel="3" /><br />
<font color="green">Leave empty to use default pricing</font><br />
<br />
<label>
Maximum Discount Percent</label><br />
<input type="text" name="MaxDiscPct" id="MaxDiscPct" rel="4" /><br />
<br />
<label>
Maximum Discount Amount</label><br />
<input type="text" name="MaxDiscAmt" id="MaxDiscAmt" rel="5" /><br />
<br />
<table style="border-style:none;">
<tr><td>
<label>
Tax 1</label><br />
<input type="text" name="Tax1" id="Tax1" rel="6" style="width:90px;" /><br />
<br /></td>
<td>
<label>
Tax 2</label><br />
<input type="text" name="Tax2" id="Tax2" rel="7" style="width:90px;" /><br />
<br /></td>
</tr>
</table>
<label>
Commission</label><br />
<input type="text" name="Comm" id="Comm" rel="7" /><br />
<br />
</form>
任何提示和指南将不胜感激。谢谢。
最佳答案
我花了几个小时(!)为您重写了代码。 You can download it here
我的 _Layout.cshtml block 中有以下链接和脚本。
<head>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-ui.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
</head>
我在项目中添加了 3 个文件夹:
我将其他文件夹和文件保留在新的 ASP.NET MVC 3 项目中。
注意:我注释掉了 .makeEditable() 方法(jquery.dataTables.editable 插件),因为我从未使用过它。
表示 TierPrice 的简单类。
public class TierPrice
{
public int ID { get; set; }
public int IPFID { get; set; }
public int Qty { get; set; }
public int Amt { get; set; }
public int MaxDiscPct { get; set; }
public int MaxDiscAmt { get; set; }
public int Tax1 { get; set; }
public int Tax2 { get; set; }
public int Comm { get; set; }
}
两个不同的假存储库只是为了模仿两个不同的数据库。
项目中唯一的 Controller 。没什么特别的。
索引方法
public ActionResult Index()
{
ViewBag.ID = 1; // ID of table?
return View();
}
AjaxItemPriceProvider 和 AjaxTierPriceProvider 是为 View 中的两个数据表提供数据的两个 JsonResult 方法。
public JsonResult AjaxItemPriceProvider (int id)
{
/* =======================================
Description of parameters
* INPUT PARAMETERS:
iDisplayLength: Number of rows in each page
iDisplayStart: The Number of the row that will be shown from it to iDisplayLength
sSearch: Seach phrase
iSortCol_0 (_n): Name of Sort field
sSortDir_0 (_n): Direction of the sort
* OUTPUT PARAMETERS:
sEcho: Number of calling this method via dataTables-AJAX (1-base: in first call sEcho is 1)
iTotalRecords: Number of total records
iTotalDisplayRecords:
aaData: Return data in string array format
* =======================================
*/
string[][] ItemPriceRows = FakeRepository1.GetAllItemPrices(id);
Dictionary<string, object> result = new Dictionary<string, object>();
result.Add("sEcho", Request["sEcho"]);
result.Add("iTotalRecords", ItemPriceRows.Length);
result.Add("iTotalDisplayRecords", ItemPriceRows.Length);
result.Add("aaData", ItemPriceRows);
JsonResult json = Json(result, JsonRequestBehavior.AllowGet);
return json;
}
public JsonResult AjaxTierPriceProvider (int id)
{
string[][] TierPriceRows = FakeRepository2.GetAllTierPrices(id);
Dictionary<string, object> result = new Dictionary<string, object>();
result.Add("sEcho", Request["sEcho"]);
result.Add("iTotalRecords", TierPriceRows.Length);
result.Add("iTotalDisplayRecords", TierPriceRows.Length);
result.Add("aaData", TierPriceRows);
JsonResult json = Json(result, JsonRequestBehavior.AllowGet);
return json;
}
注意:Id(即 ViewBag.ID)被传递给这些方法,而方法又将其传递给假存储库。但在这个示例中,存储库实际上并不关心它们,只是返回虚假数据。
最后是接受新行的简单方法 (TierPrice),当然是通过 POST 操作:
[HttpPost]
public String AjaxAddNewTierPrice(TierPrice newTierPrice)
{
// TierPrice calss is defined in Models\TierPrice.cs
string addReult = FakeRepository2.AddTierPrice(newTierPrice);
return addReult;
}
View 可能看起来有点复杂,但其实不然。
注意我是如何描述数据表的 AJAX 路径的:
"sAjaxSource": '@Url.Action("AjaxItemPriceProvider", new { id = ViewBag.ID })',
然后在 myItemPrice 数据表中,第一列的定义如下:
{ "sName": "ID",
"fnRender": function (oObj) { return renderAddNewRowLink(oObj); },
"aTargets": [0],
...
},
renderAddNewRowLink() 非常简单:
function renderAddNewRowLink(obj) {
var hyperlink = "<a href='javascript:void(0)' ";
hyperlink += "onclick='showFormAddNewRow("
hyperlink += obj.aData[0];
hyperlink += ")'>";
hyperlink += obj.aData[0];
hyperlink += "</a>";
return hyperlink;
}
注意:oObj是dataTable插件的容器对象。它应该被传递给 renderAddNewRowLink(),因此该函数可以访问包含来自 AJAX 调用的数据的 obj.aData 数组。
好的。我们快要到了。 showFormAddNewRow() 也非常简单明了。看一看:
function showFormAddNewRow(id) {
$('#divAddNewRow').show();
$('#divCoverBg').show();
$('#formAddNewRow #ID').val(id);
}
注意:$('#formAddNewRow #ID').val(id) 是将 ID 从 myItemPrice 表传递到 formAddNewRow 表单的关键。
如果您熟悉Ajax.BeginForm,其余的就很清楚了,如果不熟悉,这是一个很好的例子:Using Ajax.BeginForm with ASP.NET MVC 3 Razor
注意:每次添加新的 TierPrice 后,以下函数都会强制 myTierPrice 数据表自行刷新(通过调用 AjaxTierPriceProvider)。
function addNewTierPriceCompleted(obj) {
TierPriceTable.fnDraw();
}
我还在 site.css 中添加了 2 个样式。添加新行的过程需要这些样式。
关于asp.net-mvc-3 - 一页中的两个数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6339867/
我试图对 ASP.Net MVC 有一个高层次的理解,我开始意识到它看起来很像原始的 ASP 脚本。过去,我们将“模型”/业务逻辑代码组织到 VBScript 类或 VB COM 组件中。 当然,现在
我已经搜索了一段时间,但似乎找不到答案。 我想在我的旋转木马中显示一个计数器,左边是当前项目(工作),左边是项目总数。 我的代码:
. 最佳答案 Scott Gu 称这些为代码块。这就是我的看法。 http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax
我有一个使用 Visual Studio 2010/.net 4/VB 制作的网站。 我真的很喜欢我发现的 FAQ 系统的布局,因为它很简单,但它是经典的 asp。所以,显然,我不能包括我的母版页布局
好吧,对于你们许多人来说,这个问题可能有一个非常明显的答案,但它让我难住了。 我有一个 asp.net Web 表单,上面有两个控件(嗯,不止这两个,但我们将重点关注这些) - 第一个是 asp:dr
当我将 ASP.NET 复选框控件设置为 asp.net 更新面板的异步回发触发器时,EventName 属性是什么? 最佳答案 我相信它是 CheckedChanged。 关于asp.net - a
我有一个用经典 asp 编写的(巨大的)网站。现在我必须切换到 vb.net (razor)。有没有办法将这两个结合起来直到切换完成? 有没有办法让应用程序与经典的 asp 和 vb.net 一起工作
I am creating a products page, where the user selects an option in a radiobuttonlist for example, an
我最近将一个经典的 ASP 应用程序转换为 ASP.NET 3.5,但我觉得我的经典 ASP 版本要快一些(我不知道可能买家会后悔)。 所以你们能帮我解决这个问题吗,让我知道哪个更快,asp、asp.
从本周开始,我被要求开始学习如何使用 ASP 开发网站。我通过 XNA 对 C# 有一定的经验,所以这部分对我来说并不是什么麻烦。 我一直在关注Music Store Tutorial这需要我设置一个
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
我想将一些表单变量发布到经典 ASP 页面中。我不想改变经典的 ASP 页面,因为需要完成大量的工作,以及消耗它们的页面数量。 经典的 ASP 页面需要将表单变量 Username 和 Userpas
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
在某种程度上,这可能是一个异端问题。我们有一个大型站点,其中许多页面仍在ASP中。通常,并没有真正动态的,而是包括(通过SSI或Server.Execute)定期重新生成的HTML块。看起来好像是一个
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
我有一个遗留的 ASP 应用程序——在不久的某个时候——需要迁移到 ASP.Net 2.0(以与也在 2.0 中的其他应用程序兼容)。 对于这类事情是否有最佳实践,即作为第一步将当前 html、vbs
我目前在一家公司工作,该公司使用 ASP.NET Webforms 和旧 ASP 页面的组合进行 Web 开发。这对于他们当前的项目来说效果很好,但我想说服/建议他们切换到 ASP.NET MVC,因
我有一个经典的 asp 应用程序。我想将该页面的竞赛表格发布到 Asp.Net 表格。原因是我想在进入数据库之前使用我在 Asp.Net 页面中内置的大量逻辑进行验证,而我对 asp 不太了解。更不用
我知道在 ASP.NET MVC 中,您可以拥有移动 View 并执行类似 Index.mobile.cshtml 的操作。和 _Layout.mobile.cshtml并且服务器知道将这些 View
我需要从一些服务器端 c#.net 代码中调用经典 asp 页面上的 VBscript 函数 - 有谁知道一种干净的方法来做到这一点?在 .net 中重写函数不是一种选择。 我会再解释一下这个问题..
我是一名优秀的程序员,十分优秀!