• LinkButton中使用CommandArgument传递参数


    开发中经常需要将值存起来,当点击某一项时以便知道点击了哪一项。这里使用LinkButton的CommandArgument保存参数方式作个小结。

    一、传递单一参数,注意下边代码中加粗部分:

    代码
                            <asp:ListView ID="lvWorkFlowList" runat="server">
                                
    <LayoutTemplate>
                                    
    <asp:PlaceHolder runat="server" ID="itemPlaceholder" />
                                
    </LayoutTemplate>
                                
    <ItemTemplate>
                                    
    <div class="listViewStyle">                                   
                                        
    <<asp:LinkButton ID="lbnWorkFlowItem" runat="server" OnClick="lbnWorkFlowItem_Click"
                                            CommandArgument='<%#((BPM.Foundation.WFDB.WF_Template_V)Container.DataItem).ID %>'>
                                       <img src="../Resources/images/flow_icon.jpg" alt=""/> 
                                       
    <%#((BPM.Foundation.WFDB.WF_Template_V)Container.DataItem).templateName %>
                                        
    </asp:LinkButton>
                                    
    </div>
                                
    </ItemTemplate>
                            
    </asp:ListView>


    二、传递多个参数,使用json形式:

    1、在页面上组合json,注意下边代码中加粗部分组合了带两个参数的json形式:

    代码
                            <asp:ListView ID="lvWorkFlowList" runat="server">
                                
    <LayoutTemplate>
                                    
    <asp:PlaceHolder runat="server" ID="itemPlaceholder" />
                                
    </LayoutTemplate>
                                
    <ItemTemplate>
                                    
    <div class="listViewStyle">
                                        
    <asp:LinkButton ID="lbnWorkFlowItem" runat="server" OnClick="lbnWorkFlowItem_Click"
                                            CommandArgument='<%#"{TID:\"" + ((BPM.Foundation.WFDB.WF_Template_V)Container.DataItem).templateID + "\",TVer:\""
             + ((BPM.Foundation.WFDB.WF_Template_V)Container.DataItem).templateEdition +"\"}"%>
    '>  
                            
    <img src="../Resources/images/flow_icon.jpg" alt="" /> 
    <%#((BPM.Foundation.WFDB.WF_Template_V)Container.DataItem).templateName%>
                                        
    </asp:LinkButton>
                                    
    </div>
                                
    </ItemTemplate>
                            
    </asp:ListView>

    2、在后组合json的形式。

    代码
                //通过循环给每个listview增加json形式的参数
                foreach (ListViewItem lvItem in lvWorkFlowList.Items)
                {
                    Control conLinkButton = lvItem.FindControl("lbnWorkFlowItem");
                    
    if (conLinkButton != null)
                    {
                        LinkButton lbnItem = (LinkButton)conLinkButton;
                        
    string sID = lbnItem.CommandArgument;
                        var vTemplateItem =
                            from wfp in iWorkflowPowerV
                            .Where(wfp => wfp.ID.ToString() == sID)
                            select new { wfp.templateID, wfp.templateEdition, wfp.templateName, wfp.businessType };
                        
    string sJson = "Dpt:\"{0}\",Dty:\"{1}\",tptID:\"{2}\",tptEdition:\"{3}\",tptName:\"{4}\",tptType:\"{5}\"";
                        
    foreach (var vObj in vTemplateItem)
                        {
                            sJson = string.Format(sJson, sDptId, sDtyId, vObj.templateID.ToString(), vObj.templateEdition.ToString(),
                                vObj.templateName.ToString(), vObj.businessType.ToString());
                            lbnItem.CommandArgument = "{" + sJson + "}";
                            
    break;
                        }
                    }
                }

     

    后台调用参数方法:

    代码
    using Newtonsoft.Json;  //调用json类

            
    protected void lbnWorkFlowItem_Click(object sender, EventArgs e)
            {
                
    string sArg = ((LinkButton)sender).CommandArgument.ToString();
                
    //得到json值
                Newtonsoft.Json.Linq.JObject jJsonObj = Newtonsoft.Json.Linq.JObject.Parse(sArg);
                
    //得到参数1
                string sTemplateID = (string)jJsonObj["TID"];
                hfTemplateID.Value = sTemplateID;
                
    //得到参数2
                string sTemplateEdition = (string)jJsonObj["TVer"];
                hfTemplateEdition.Value = sTemplateEdition;
            }

     


     
  • 相关阅读:
    Vue自定义过滤器
    Vue自带的过滤器
    vue单页面程序
    Angular 通过 $http.post 写入本地 JSON 文件
    Windows下搭建PHP开发环境
    在MyEclipse下创建Java Web项目 入门(图文并茂)经典教程
    jQuery编程的最佳实践
    微信小程序 TLS 版本必须大于等于1.2问题解决
    linux批量压缩当前目录中文件后,删除原文件
    docker 删除镜像
  • 原文地址:https://www.cnblogs.com/scottckt/p/1729634.html
Copyright © 2020-2023  润新知