asp.net - JQGrid:用于从外部表中选择项目的下拉菜单 - DataValueField 与 DataTextField

标签 asp.net jquery drop-down-menu jqgrid

假设 Items 和 ItemTypes 具有数字主键 ItemID 和 ItemTypeID。每个项目都分配有一个项目类型。

我有一个 JQGrid 来编辑项目。当不在编辑模式下时,我想查看 ItemType 的名称,而不是 ItemTypeID:

    TYPE       | TITLE
    -----------+--------------------
    Category A | Item 1
    Category A | Item 2
    Category B | Item 3
    Category B | Item 4

In edit mode, I want to see a dropdown that displays the ItemType text, but that returns the ItemTypeID to the server.

Here's what I have so far (using the ASP.NET wrapper for JQGrid):

<trirand:jqgrid id="Grid1" runat="server" ... >
    <columns>
        <trirand:jqgridcolumn datafield="ItemID" editable="false" visible="false" width="50" primarykey="true" />
        <trirand:jqgridcolumn datafield="ItemTypeID" editable="true" edittype="DropDown" editorcontrolid="ItemTypes" />
        <trirand:jqgridcolumn datafield="Title" editable="true" sortable="true" />
        ...
    </columns>
</trirand:jqgrid>
<asp:sqldatasource runat="server" id="ItemTypesDatasource" connectionstring="<%$ ConnectionStrings:Main %>" selectcommand="Select ItemTypeID,Title from ItemTypes order by Title" />
<asp:dropdownlist runat="server" id="ItemTypes" datasourceid="ItemTypesDatasource" datavaluefield="ItemTypeID" datatextfield="Title" />

问题是,当不处于编辑模式时,它显示数字 ItemTypeID,而不是文本标签:

    TYPE       | TITLE
    -----------+--------------------
    100123     | Item 1
    100123     | Item 2
    100124     | Item 3
    100124     | Item 4

有什么方法可以让 JQGrid 尊重 DataValueField 和 DataTextField 之间的区别吗? (使用 jQuery API 或 ASP.NET 插件。)

最佳答案

对于那些使用javascrpt而不是asp.net包装器的人来说,javascript方式是使用格式化程序和取消格式化程序:

柱模型:

editoptions:{value:'1:Type1;2:Type2;3:Type3;4:Type4;5:Type5'}, 格式化程序:showTextFmatter,unformat:unformatShowText,

我的格式化程序,你应该编写自己的格式化程序,如下所示:

    function showTextFmatter (cellvalue, options, rowObject)   
    {  
       var vts={};
       if(options.colModel.editoptions.values==undefined)
       {
           vtStr = options.colModel.editoptions.value.split(';');
           for(var i =0;i<vtStr.length;i++)
           {
              kv = vtStr[i].split(':');
              vts[kv[0]]=vtStr[i]; 
           }
           options.colModel.editoptions.values = vts;
       }
       return options.colModel.editoptions.values[cellvalue];   
    }   
    function  unformatShowText (cellvalue, options)   
    { 
       return cellvalue.split(':')[0];  
    }  

关于asp.net - JQGrid:用于从外部表中选择项目的下拉菜单 - DataValueField 与 DataTextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1939783/

相关文章:

javascript - 级联下拉菜单

javascript - 如何确定实际悬停的是哪个元素

asp.net - 从代码隐藏更改 GridView 列属性

javascript - 将 asp net 项目连接到 MantisBT 跟踪器

javascript - 侧边菜单栏的过渡效果

jquery - textarea:插入或删除文本后追加和前置不再起作用

jquery - 滚动到 jQuery/CSS 中的内容

c# - 如何将变量传递给页面方法成功回调函数

具有 2FA 的 Asp.Net Identity - 记住 session 后不保留浏览器 cookie

jquery改变div的宽度