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

简介: 先看列 这里绑定了入库单号列,编辑的js方法为doShowInStoreInfo //显示入库单信息 function doSh...
+关注继续查看

先看列

<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;
   }


目录
相关文章
|
JavaScript .NET
asp.net GridView列数据鼠标移入显示提示信息
问题提出: 在asp.net开发中,如果有这样的一个需求,如果在列表控件,如GridView中的某列中显示的是一个计算公式得出的值,那么需求来了,鼠标移入该数字,显示该数字的计算公式和过程,如何做? 解决方案分析: 常规可以使用控件的title属性来显示提示信息,但是显示信息的样式不美观。
949 0
|
机器学习/深度学习 .NET Go
【译】在Asp.Net中操作PDF - iTextSharp - 利用列进行排版
原文 【译】在Asp.Net中操作PDF - iTextSharp - 利用列进行排版   在使用iTextSharp通过ASP.Net生成PDF的系列文章中,前面的文章已经讲述了iTextSharp所涵盖的大多数基本功能.
954 0
|
JavaScript .NET 开发框架
asp.net 鼠标移入Repeater某一行时改变颜色并且checkbox列被选中
/*被选中*/ function OnCheck(event) { var obj = event.
806 0
|
Web App开发 .NET
asp.net根据条件动态生成GridView,并动态绑定列,且可对其进行编辑的实现
根据用户需要,一个页面中,有几个不同的button,点击不同的button,可在下方同一区域产生gridview,(当然他们的gridview是不同的)。之前用MultiView来控制,用了几个view在html中绑定了几个Gridview,然后根据点击的按钮不同,切换不同的view。
1060 0
相关产品
云迁移中心
推荐文章
更多