• jqgrid for asp.net 遍历所有列rowObject时不用输入编号


    先看列

    <cc1:JQGridColumn Visible="false" Editable="true" DataType="String" Searchable="true" SearchToolBarOperation="IsEqualTo"
                      HeaderText="入库单编号" DataField="inStoreCode">
                      <Formatter>
                              <cc1:CustomFormatter FormatFunction="doShowInStoreInfo" UnFormatFunction="unformatCode" />
                          </Formatter>
     </cc1:JQGridColumn>

    这里绑定了入库单号列,编辑的js方法为doShowInStoreInfo

    //显示入库单信息
      function doShowInStoreInfo(cellValue, options, rowObject) {
      	var vPageParam = "inStoreId=" + rowObject[3] + "&inStoreCode=" + cellValue;
      	var strURL = "./_view.aspx?" + vPageParam; 
      	var imageHtml = "<a target='_blank' style='color:Blue; text-decoration:nonde;'
      	href='" + strURL + "'>" + cellValue + "</a>";
     	 return imageHtml;
      }

    在js方法中,我要把这个行的第三列(比如是个ID)的值传到指定页面,而且rowObject只接受INT参数,那我要传第30列,第60列,不肯能一个一个数在多少列,要是动态的就更不可能了,所以我要写一个方法返回列名所在列的编号,在前台JS里可以通过rowid获得指定列的值,但是必须是列编辑完才能获到,doShowInStoreInfo是正在进行时所以不能用。我的解决办法是在添加行之前把列和列的编号放在一个参数里,在通过方法取出来,那么在前台我不知道哪个事件是在编辑行之前触发的,而且前台也没有遍历jqgrid列的方法,所以只能从后台入手,在页面Load时就加载,然后存到前台参数,这里用json格式,

    List<string> Itemlist = new List<string>();
                      if (_hidListColumns.Value == "")
                      {
                          if (Jqgrid1.Columns.Count != 0)
                          {
                              for (int i = 0; i < Jqgrid1.Columns.Count; i++)
                              {
                                  var newObj = new { Item = i, ColumnsName = Jqgrid1.Columns[i].DataField };
                                  string serExpr = JavaScriptConvert.SerializeObject(newObj);
                                  Itemlist.Add(serExpr);
                              }
                              var listColumns = new { Itemlist = Itemlist };
                              _hidListColumns.Value = JavaScriptConvert.SerializeObject(listColumns);
                          }
                      }

    套了两层,存在_hidListColumns控件里。

    前台接受

    function getColumnindex(name) {
                  var ListColumns = document.getElementById("_hidListColumns").value;
                  eval("var ListColumns=" + ListColumns);
                  if (ListColumns!="") {
                      for (var i = 0; i < ListColumns.Itemlist.length; i++) {
                          eval("var Items=" + ListColumns.Itemlist[i]);
                          if (Items.ColumnsName == name) {
                              return Items.Item;
                          }
                      }
                  }
                 
              }

    因为是在load就赋值了,所以前台前台就能获到,编辑方法就可以传列名了

    //显示入库单信息
       function doShowInStoreInfo(cellValue, options, rowObject) {
       	var vPageParam = "inStoreId=" + rowObject[getColumnindex("id")] + "&inStoreCode=" + cellValue;
       	var strURL = "./_view.aspx?" + vPageParam; 
       	var imageHtml = "<a target='_blank' style='color:Blue; text-decoration:nonde;'
       	href='" + strURL + "'>" + cellValue + "</a>";
      	 return imageHtml;
       }


  • 相关阅读:
    [翻译]跟我一起边译边学之Linux:目录
    [翻译]跟我一起边译边学之Linux:致谢 Acknowledgments
    计算机图形学资源收集01
    计算机图形学资源收集02
    计算机图形学资源收集04
    计算机图形学资源收集03
    C#二十几种设计模式事例下载(源码)
    在WinForm应用程序中嵌入WPF控件
    .net网站与Winform窗体的数据交互(JS调用Winform后台方法实现)
    C#调用rar.exe解压一个rar文件
  • 原文地址:https://www.cnblogs.com/shiworkyue/p/3845336.html
Copyright © 2020-2023  润新知