0

ウェブグリッドがあり、各行にチェックボックスがあります。チェックボックスをクリックすると、jQuery Ajax を介してその行の値を actionResult メソッドに取得したいと考えています。actionResult と jQuery Ajax の部分は問題ではありませんが、チェックボックスの onclick イベントからこれらの値を取得する方法がわかりません。

@{
    ViewBag.Title = "Index";
}
<h2>
    Index</h2>
<p>
    @Html.ActionLink("Create New User", "CreateUser")
</p>
<div class="webgrid-wrapper">
    @model IEnumerable<UserManager.Models.vw_UserManager_Model>
@{
    ViewBag.Title = "Jobs";
    WebGrid grid = new WebGrid(Model, canPage: true, canSort: true, rowsPerPage: 15, selectionFieldName: "selectedRow", fieldNamePrefix: "gridItem");

}
    @grid.GetHtml(
    fillEmptyRows: true,
        tableStyle: "webgrid",
                alternatingRowStyle: "webgrid-alternating-row",
                headerStyle: "webgrid-header",
                footerStyle: "webgrid-footer",
                selectedRowStyle: "webgrid-selected-row",
            rowStyle: "webgrid-row-style",
        mode: WebGridPagerModes.All,
columns: new[] {
    grid.Column("UserName"),
    grid.Column("salutation"),
    grid.Column("FirstName"),
    grid.Column("LastName"),
    grid.Column("Password"),
    //grid.Column("isactive"),
    //grid.Column(header: "Is logged in?", format: (model) => @Html.Raw("<input type='checkbox' checked='" + ((model.isactive) ? "checked" : "unchecked") + "' />")),  
    grid.Column(header: "Print?", format: @<text><input name="Prints" 
      type="checkbox"  @(item.isactive == true ? "Checked" : null) onclick="logUserOff()" id="chkboxIsActive" /></text>),
    grid.Column("isApproved"),  
    grid.Column("MaxConcurrentUsers"),
    grid.Column("email"),
    grid.Column("group_name"),
   grid.Column("module_name"), 


     grid.Column(header:"Edit", format:@<text><div id="btnEditSelectedRow">
         "@Html.ActionLink("Edit record", "EditUser", "UserManager", new {
         userid = item.userid,
         salutation = item.salutation,
         firstname = item.FirstName, 
         lastname = item.LastName, 
         password = item.Password, 
         isactive = item.isactive,
         isapproved = item.IsApproved,
         maxconcurrentusers = item.MaxConcurrentUsers,
         email = item.email, 
         module = item.module_name, 
         group = item.group_name }, null)</div></text>),

    grid.Column(header:"Delete", format:@<text><div id="btnDelSelectedRow">
        "@Html.ActionLink("Delete record", "DeleteUser", "UserManager", new {
         userid = item.userid,
         username = item.UserName,
         salutation = item.salutation,
         firstname = item.FirstName, 
         lastname = item.LastName, 
         password = item.Password, 
         isactive = item.isactive, 
         email = item.email, 
         module = item.module_name, 
         group = item.group_name }, null)</div></text>)


})
</div>
<script type="text/javascript">
    $(document).ready(function () {

        // Disable checkboxs where a user is not active.
        $("input:not(:checked)").attr("disabled", "disabled");

        // Style tables.
        function jQueryUIStyling() {
            $('input:button, input:submit').button();

            $('.webgrid-wrapper').addClass('ui-grid ui-widget ui-widget-content ui-corner-all');
            $('.webgrid-title').addClass('ui-grid-header ui-widget-header ui-corner-top');
            jQueryTableStyling();
        } // end of jQueryUIStyling

        function jQueryTableStyling() {
            $('.webgrid').addClass('ui-grid-content ui-widget-content');
            $('.webgrid-header').addClass('ui-state-default');
            $('.webgrid-footer').addClass('ui-grid-footer ui-widget-header ui-corner-bottom ui-helper-clearfix');
        } // end of jQueryTableStyling
    });
</script>
<script type="text/javascript">
    function logUserOff() {
        var answer = confirm('Are you sure you want to save this data?')
        if (answer) {
            return true;
        }
        else {
            return false;
        }
    };
</script>

私のチェックボックス

grid.Column(header: "Print?", format: @<text><input name="Prints" 
      type="checkbox"  @(item.isactive == true ? "Checked" : null) onclick="logUserOff()" id="chkboxIsActive" /></text>),

行の値をjavascriptに渡すようにチェックボックスを変更するにはどうすればよいですか?

4

1 に答える 1

1

私は自分でそれを理解することになりました。

grid.Column(header: "Print?", format: @<text><input name="Prints" 
      type="checkbox"  @(item.isactive == true ? "Checked" : null) onclick="logUserOff('@Url.Action("LogUserOff", "UserManager")', '@item.userid')" id="chkboxIsActive" /></text>),

onClick 関数は、正しい文字リテラルを使用している限り、かみそりエンジンによって生成された値を渡すことができるため、JavaScript は渡された文字列を解析できます。

<script type="text/javascript">
    function logUserOff(url, value) {
        var answer = confirm('Are you sure you want to save this data?')
        if (answer) {
            alert(url + ": " + value);

//            $.ajax({
//               
//            });


            return true;
        }
        else {
            return false;
        }
    };

アラートを使用して、正しい値が渡されることを確認しました。たぶん、これは立ち往生している他の誰かを助けることができます.

于 2012-11-13T11:43:45.873 に答える