<%@ Page Language="C#" AutoEventWireup="true" EnableViewState="true" CodeBehind="ContactEip.aspx.cs"
    Inherits="AccountPlan.ContactEip" ValidateRequest="false" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="head1" runat="server">
    <title>发起价值探索之旅EIP流程</title>
    <%--<script src="Scripts/jquery-1.8.2.min.js" type="text/javascript"></script>--%>
    <style type="text/css">
        #gvVehicle table td
        {
            width: 12px;
        }
    </style>
    <script type="text/javascript">
        var accountid = "<%=contactid1 %>";
        function CbxOnClick(obj) {

            var inputs = document.getElementById("<%=gvContact.ClientID%>").getElementsByTagName("input");
            ; i < inputs.length; i++) {
                if (inputs[i].type == "checkbox") {
                    inputs[i].checked = false;
                }
            }
            obj.checked = true;
        }
        //单击选择
        function ASingleClick(obj) {
            //当前行只有一个input,故不判定是否为checkbox
            ];
            var inputs = document.getElementById("<%=gvContact.ClientID%>").getElementsByTagName("input");
            ; i < inputs.length; i++) {
                if (inputs[i].type == "checkbox") {
                    inputs[i].checked = false;
                }
            }
            cbx.checked = true;
        }

        //双击选中(关闭页面)
        function ADoubleClick(obj) {
            window.open("/main.aspx?etc=2&extraqs=%3f_gridType%3d2%26etc%3d2%26id%3d%257b" + obj.id + "%257d%26pagemode%3diframe%26preloadcache%3d1447931081302%26rskey%3d892563048&pagetype=entityrecord", "_blank", false);
        }
        function OpenContactForm() {
            var id = document.getElementById("ownerid").value;
            var returnValue = window.showModalDialog('../AccountPlan/ContactLookup.aspx?ownerid=' + id + '&contactid=' + accountid, 'newwindow', 'dialogHeight=700px;dialogWidth=750px;top=0;left=0;toolbar=no;menubar=no;scrollbars=no; resizable=no;location=no; status=no;');
            if (returnValue != null) {
                if (returnValue.contact.name == null || returnValue.contact.name == "") {
                    alert("联系人姓名字段没有值,请双击此联系人进行维护");
                    document.getElementById("selcontactid").value = "";
                    return;
                }
                if (returnValue.yt_telephone == null || returnValue.yt_telephone == "") {
                    alert("联系人电话字段没有值,请双击此联系人进行维护");
                    document.getElementById("selcontactid").value = "";
                    return;
                }
                if (returnValue.yt_duties == null || returnValue.yt_duties == "") {
                    alert("联系人职务字段没有值,请双击此联系人进行维护");
                    document.getElementById("selcontactid").value = "";
                    return;
                }
                if (returnValue.yt_role == null || returnValue.yt_role == "") {
                    alert("联系人决策角色字段没有值,请双击此联系人进行维护");
                    document.getElementById("selcontactid").value = "";
                    return;
                }
                if (returnValue.yt_active == null || returnValue.yt_active == "") {
                    alert("联系人兴趣爱好字段没有值,请双击此联系人进行维护");
                    document.getElementById("selcontactid").value = "";
                    return;
                }
                if (returnValue.yt_brandpreference == null || returnValue.yt_brandpreference == "") {
                    alert("联系人品牌偏好字段没有值,请双击此联系人进行维护");
                    document.getElementById("selcontactid").value = "";
                    return;
                }
                if (returnValue.customertype == null || returnValue.customertype == "") {
                    alert("联系人民族字段没有值,请双击此联系人进行维护");
                    document.getElementById("selcontactid").value = "";
                    return;
                }
                if (returnValue.gender == null || returnValue.gender == "") {
                    alert("联系人性别字段没有值,请双击此联系人进行维护");
                    document.getElementById("selcontactid").value = "";
                    return;
                }
                document.getElementById("selcontactid").value = returnValue.contact.id;
                accountid += "'" + returnValue.contact.id + "',";
                //$("#selcontactid").val(returnValue.contact.id);
                //alert(accountid);
            }
            else {
                document.getElementById("selcontactid").value = "";
            }
        }
    </script>
    <base target="_self" />
</head>
<body style="font-size: 12px; background: #E9EDF1;">
    <form id="form1" runat="server">
    <input type="hidden" id="contactid" runat="server" />
    <input type="hidden" id="ownerid" runat="server" />
    <input type="hidden" id="selcontactid" runat="server" />
    <asp:Label runat="server" Text="" ID="txterror"></asp:Label>
    <asp:ScriptManager ID="scriptManager1" runat="server">
    </asp:ScriptManager>
    <table style="width: 560px; margin-left: 30px;">
        <tr>
            <td>
                <asp:UpdatePanel ID="updatePanel2" runat="server">
                    <ContentTemplate>
                        <asp:Button Text="新增" runat="server" ID="btnAdd" OnClientClick="OpenContactForm()"
                            OnClick="BtnAdd_Click" />
                        <asp:Button Text="删除" runat="server" ID="btnDelete" OnClick="BtnDelete_Click" />
                    </ContentTemplate>
                </asp:UpdatePanel>
            </td>
            <td>
            </td>
        </tr>
        <tr>
            <td colspan=">
                <asp:UpdatePanel ID="updatePanel1" runat="server">
                    <ContentTemplate>
                        <asp:GridView ID="gvContact" runat="server" Width="550px" HeaderStyle-BackColor="#A7CDF0"
                            AutoGenerateColumns="
                            DataKeyNames="ContactId" onpageindexchanging="GvContact_PageIndexChanging">
                            <Columns>
                                <asp:TemplateField HeaderText="选择" HeaderStyle-Width="30px">
                                    <ItemTemplate>
                                      <input type="checkbox" id="chk" runat="server"  class="checkbox" value='<%# Eval("ContactId")%>' />
                                       <%-- <asp:CheckBox runat="server" ID="cbxVehicle" onclick="CbxOnClick(this)"  />--%>
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField ItemStyle-Width="40px" HeaderText="姓名">
                                    <ItemTemplate>
                                        <a href="javascript:void(0);" onclick="ASingleClick(this)" ondblclick="ADoubleClick(this)"
                                            style="color: black" id="<%#Eval("ContactId")%>" >
                                             <asp:Label ID="lblname" runat="server" Text='  <%# Eval("LastName")%>'></asp:Label></a>
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="工作职务" HeaderStyle-Width="50px">
                                    <ItemTemplate>
                                        <asp:Label ID="lblpost" runat="server" Text='  <%# Eval("yt_postname")%>'></asp:Label></ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="决策角色" ItemStyle-Width="50px">
                                    <ItemTemplate>
                                        <asp:Label ID="lblrole" runat="server" Text=' <%# Eval("AccountRoleCodename")%>'></asp:Label></ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="兴趣爱好" ItemStyle-Width="50px">
                                    <ItemTemplate>
                                        <asp:Label ID="lbllike" runat="server" Text='<%# Eval("yt_like")%>'></asp:Label></ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="品牌偏好" ItemStyle-Width="50px">
                                    <ItemTemplate>
                                        <asp:Label ID="lblbrand" runat="server" Text=' <%# Eval("yt_brand_remark")%>'></asp:Label></ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="联系方式" ItemStyle-Width="20px">
                                    <ItemTemplate>
                                        <asp:Label ID="lblphone" runat="server" Text='<%# Eval("MobilePhone")%>'></asp:Label></ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="民族" ItemStyle-Width="30px">
                                    <ItemTemplate>
                                        <asp:Label ID="lbltypecode" runat="server" Text='<%# Eval("customertypecode")%>'></asp:Label></ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="性别" ItemStyle-Width="30px">
                                    <ItemTemplate>
                                        <asp:Label ID="lblgender" runat="server" Text='<%# Eval("gendercode")%>'></asp:Label></ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="所属分公司" ItemStyle-Width="50px">
                                    <ItemTemplate>
                                        <asp:Label ID="lblcompany" runat="server" Text='<%# Eval("name")%>'></asp:Label></ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="客户类别" ItemStyle-Width="30px">
                                    <ItemTemplate>
                                        <asp:Label ID="lblcategory" runat="server" Text='<%# Eval("yt_vehicle_category")%>'></asp:Label></ItemTemplate>
                                </asp:TemplateField>
                            </Columns>
                        </asp:GridView>
                    </ContentTemplate>
                </asp:UpdatePanel>
            </td>
        </tr>
    </table>
    <div style="position: absolute; right: 80px; bottom: 20px; height: 30px; text-align: right;">
        <asp:Button ID="btnSave" runat="server" Text="提交" OnClick="BtnSave_Click" />
    </div>
    </form>
</body>
</html>
using System;
using System.Data;
using System.Linq;
using System.ServiceModel.Description;
using System.Text;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Xml;
using AccountPlan.BusinessLogic;
using AccountPlan.EIPContact;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Client;
using Microsoft.Xrm.Sdk.Query;

namespace AccountPlan
{
    public partial class ContactEip : System.Web.UI.Page
    {
        private static IOrganizationService orgService = null;
        public string contactid1 = "";
        protected void Page_Load(object sender, EventArgs e)
        {
            string selcontactid = "";
            contactid1 = Request["contactid"].Replace("}", "'").Replace("{", "'"); //"'70AC84A7-4C7D-E411-9B32-0050568552DC','6EAC84A7-4C7D-E411-9B32-0050568552DC'";
            string ownerid = Request["ownerid"].ToString(); //"008611BC-D76A-E311-B5F7-005056AD01FA";
            this.ownerid.Value = ownerid;
            selcontactid = this.selcontactid.Value;
            if (!IsPostBack)
            {
                try
                {
                    if (this.DT == null)
                    {
                        DT = new DataTable();
                        DT.Columns.Add(new DataColumn("ContactId"));
                        DT.Columns.Add(new DataColumn("LastName"));
                        DT.Columns.Add(new DataColumn("yt_post"));
                        DT.Columns.Add(new DataColumn("yt_postname"));
                        DT.Columns.Add(new DataColumn("AccountRoleCode"));
                        DT.Columns.Add(new DataColumn("AccountRoleCodename"));
                        DT.Columns.Add(new DataColumn("yt_attitude"));
                        DT.Columns.Add(new DataColumn("yt_attitudename"));
                        DT.Columns.Add(new DataColumn("yt_brand_remark"));
                        DT.Columns.Add(new DataColumn("MobilePhone"));
                        DT.Columns.Add(new DataColumn("customertypecode"));
                        DT.Columns.Add(new DataColumn("gendercode"));
                        DT.Columns.Add(new DataColumn("name"));
                        DT.Columns.Add(new DataColumn("yt_vehicle_category"));
                    }
                    DT = QueryData(contactid1);
                    gvContact.DataSource = DT;
                    gvContact.DataBind();
                    string temp = string.Empty;
                    ; j < gvContact.Rows.Count; j++)
                    {
                        temp += "'" + gvContact.DataKeys[j]["ContactId"].ToString() + "'" + ",";
                    }
                    contactid1 = temp;
                }
                catch (Exception ex)
                {
                    AlertMsg(ex.Message);
                }
            }

        }
        /// <summary>
        /// 数据的记录行
        /// </summary>
        private DataTable DT
        {
            get
            {
                return ViewState["selected"] as DataTable;
            }
            set
            {
                ViewState["selected"] = value;
            }
        }
        public DataTable QueryData(string contact)
        {
            string sql = string.Empty;
            if (!string.IsNullOrEmpty(contact))
            {

                sql = @"SELECT cb.ContactId,
                       cb.LastName,
                       c.yt_post,
                       post.name yt_postname,
                       isnull(cb.AccountRoleCode,-1) AccountRoleCode,
                       ar.name AccountRoleCodename,
                       c.yt_like,
                       c.yt_brand_remark,
                       cb.MobilePhone,
                       ct.name customertypecode,
                       gr.name gendercode,
                       m.name yt_vehicle_category ,
                      ac.name
                FROM ContactExtensionBase c
                INNER JOIN ContactBase cb ON c.ContactId = cb.ContactId
                LEFT OUTER JOIN account ac WITH(NOLOCK) ON cb.parentcustomerid = ac.accountid
                 OUTER APPLY dbo.fn_GetPickListName('Contact','yt_post',c.yt_post) post
                 OUTER APPLY dbo.fn_GetPickListName('Contact','AccountRoleCode',cb.AccountRoleCode) ar
                OUTER APPLY dbo.fn_GetPickListName('Contact','gendercode',cb.gendercode) gr
                OUTER APPLY dbo.fn_GetPickListName('Contact','customertypecode',cb.customertypecode) ct
                OUTER APPLY dbo.fn_GetPickListName('account','yt_vehicle_category',yt_vehicle_category) m
                WHERE cb.StateCode = 0 and c.ContactId in (" + contact + ")";
            }

            DataSet ds = BusinessLogic.SqlHelper.Query(sql);
            ];
        }

        protected void BtnSave_Click(object sender, EventArgs e)
        {
            InitializeConfig();
            string owner = Request.QueryString["ownerid"];
            string temp = string.Empty;
            ; j < gvContact.Rows.Count; j++)
            {
                temp += "'" + gvContact.DataKeys[j]["ContactId"].ToString() + "'" + ",";
            }
            contactid1 = temp;

            EntityCollection chargePersonColl = GetServiceData("systemuser", "systemuserid", owner); // 负责人
            Entity chargePersonCollEntity = chargePersonColl.Entities[];//   负责人(id)
            //负责人
            string ownerid = chargePersonCollEntity["fullname"].ToString();
            string yt_businessunit_company = chargePersonCollEntity.Contains("yt_businessunit_company") ? ((EntityReference)chargePersonCollEntity["yt_businessunit_company"]).Name : null;
            string yt_businessunit_territoryname = chargePersonCollEntity.Contains("yt_businessunit_territory") ? ((EntityReference)chargePersonCollEntity["yt_businessunit_territory"]).Name : null;
            string name = "联系人";
            )
            {
                ServiceEip(orgService, name, ownerid, yt_businessunit_company, yt_businessunit_territoryname, owner);
            }
            else
            {
                AlertMsg("请选择联系人");
            }
        }

        static string eipTemplateId = string.Empty;
        static string eipCreatorName = string.Empty;
        static string eipUrl = string.Empty;
        //发起价值探索之旅EIP流程
        public void ServiceEip(IOrganizationService service, string name, string ownerid, string yt_businessunit_company, string yt_businessunit_territoryname, string userid)
        {
            InitializeConfig();
            EIPContact.ThirdPartyParameter sr = new EIPContact.ThirdPartyParameter();
            EIPContact.ThirdPartyBean be = new EIPContact.ThirdPartyBean();
            try
            {
                EIPContact.IThirdPartyWfServiceService eipService = new EIPContact.IThirdPartyWfServiceService();
                eipService.Url = eipUrl;
                sr.subject = name;
                sr.templateId = eipTemplateId;
                sr.creatorName = GetUserEIPName(service, userid);
                sr.thirdSystemStart = "CRM";
                // sr.modelName = "com.landray.kmss.km.itsm.model.KmItsmMain";
                sr.submitStatus = ";
                Log.WriteLog(eipTemplateId);
                Log.WriteLog(eipUrl);
                Log.WriteLog(GetUserEIPName(service, userid));
                StringBuilder strBuilder = new StringBuilder();

                strBuilder.Append("<?xml version='1.0' encoding='UTF-8'?>");
                strBuilder.Append("<java version='1.5.0' class='java.beans.XMLDecoder'>");
                strBuilder.Append("<object class='java.util.HashMap'>");
                strBuilder.Append("<void method='put'>");
                strBuilder.Append("<string>ownerid</string>");
                strBuilder.Append(" <string>" + ownerid + @"</string>");
                strBuilder.Append(" </void>");
                strBuilder.Append("<void method='put'>");
                strBuilder.Append(" <string>yt_businessunit_company</string>");
                strBuilder.Append("<string>" + yt_businessunit_company + @"</string>");
                strBuilder.Append(" </void>");
                strBuilder.Append("<void method='put'>");
                strBuilder.Append(" <string>yt_businessunit_territoryname</string>");
                strBuilder.Append("<string>" + yt_businessunit_territoryname + @"</string>");
                strBuilder.Append("</void>");
                strBuilder.Append("<void method='put'>");
                strBuilder.Append("<string>明细</string>");
                strBuilder.Append("<object class='java.util.ArrayList'>");
                foreach (GridViewRow item in this.gvContact.Rows)
                {
                    strBuilder.Append(" <void method='add'>");
                    strBuilder.Append(" <object class='java.util.HashMap'>");
                    strBuilder.Append("<void method='put'>");
                    strBuilder.Append("<string>yt_vehicle_category</string>");
                    strBuilder.Append("<string>" + ((System.Web.UI.WebControls.Label)item.FindControl("lblcategory")).Text.ToString() + @"</string>");
                    strBuilder.Append("</void>");
                    strBuilder.Append(" <void method='put'>");
                    strBuilder.Append("<string>parentcustomerid</string>");
                    strBuilder.Append("<string>" + ((System.Web.UI.WebControls.Label)item.FindControl("lblcompany")).Text.ToString() + @"</string>");
                    strBuilder.Append("</void>");
                    strBuilder.Append("<void method='put'>");
                    strBuilder.Append(" <string>lastname</string>");
                    strBuilder.Append("<string>" + ((System.Web.UI.WebControls.Label)item.FindControl("lblname")).Text.ToString() + @"</string>");
                    strBuilder.Append("</void>");
                    strBuilder.Append("<void method='put'>");
                    strBuilder.Append("<string>yt_post</string>");
                    strBuilder.Append("<string>" + ((System.Web.UI.WebControls.Label)item.FindControl("lblpost")).Text.ToString() + @"</string>");
                    strBuilder.Append(" </void>");
                    strBuilder.Append("<void method='put'>");
                    strBuilder.Append("<string>customertypecode</string>");
                    strBuilder.Append(" <string>" + ((System.Web.UI.WebControls.Label)item.FindControl("lbltypecode")).Text.ToString() + @"</string>");
                    strBuilder.Append("</void>");
                    strBuilder.Append("<void method='put'>");
                    strBuilder.Append(" <string>gendercode</string>");
                    strBuilder.Append("<string>" + ((System.Web.UI.WebControls.Label)item.FindControl("lblgender")).Text.ToString() + @"</string>");
                    strBuilder.Append("</void>");
                    strBuilder.Append(" <void method='put'>");
                    strBuilder.Append(" <string>territorycode</string>");
                    strBuilder.Append("<string>" + ((System.Web.UI.WebControls.Label)item.FindControl("lblrole")).Text.ToString() + @"</string>");
                    strBuilder.Append("</void>");
                    strBuilder.Append("<void method='put'>");
                    strBuilder.Append("<string>mobilephone</string>");
                    strBuilder.Append("<string>" + ((System.Web.UI.WebControls.Label)item.FindControl("lblphone")).Text.ToString() + @"</string>");
                    strBuilder.Append("</void>");
                    strBuilder.Append("<void method='put'>");
                    strBuilder.Append("<string>yt_like</string>");
                    strBuilder.Append("<string>" + ((System.Web.UI.WebControls.Label)item.FindControl("lbllike")).Text.ToString() + @"</string>");
                    strBuilder.Append("</void>");
                    strBuilder.Append("<void method='put'>");
                    strBuilder.Append("<string>yt_brand_remark</string>");
                    strBuilder.Append("<string>" + ((System.Web.UI.WebControls.Label)item.FindControl("lblbrand")).Text.ToString() + @"</string>");
                    strBuilder.Append("</void>");
                    strBuilder.Append("</object>");
                    strBuilder.Append("</void>");
                }
                strBuilder.Append("</object>");
                strBuilder.Append("</void>");
                strBuilder.Append("</object>");
                strBuilder.Append("</java>");
                sr.formDataXML = strBuilder.ToString();
                Log.WriteLog("新建");
                Log.WriteLog(sr.formDataXML);

                ThirdPartyBean bean = eipService.createWorkFlow(sr);
                Log.WriteLog(bean.modelId);
                Log.WriteLog(bean.flag);
                if (bean.flag.ToString() == "true")
                {
                    ; j < gvContact.Rows.Count; j++)
                    {
                        string temp = gvContact.DataKeys[j]["ContactId"].ToString();
                        Entity contact = new Entity("contact"); ;
                        contact["yt_eipid"] = bean.modelId;
                        contact.Id = new Guid(temp);
                        if (contact.Contains("yt_eipcount"))
                        {
                            contact[;
                        }
                        else
                        {
                            contact[;
                        }
                        service.Update(contact);
                    }
                    AlertMsg("发起价值探索之旅EIP流程成功");

                }
                else
                {
                    AlertMsg("发起价值探索之旅EIP流程错误");
                }

            }
            catch (Exception ex)
            {
                Log.WriteLog(ex.Message);
                throw new Exception(ex.Message);

            }
        }

        #region 初始化参数
        private static void InitializeConfig()
        {
            string crmDomainName = "";
            string crmUserName = "";
            string crmUserPassword = "";
            string crmServiceUrl = "";
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load("C:/YuTongCRMConfig/YuTongCRMConfig.xml");
            XmlNode configNode = xmlDoc.SelectSingleNode("/YuTongCRMConfig");

            foreach (XmlNode item in configNode.ChildNodes)
            {
                switch (item.Name)
                {
                    case "CRMUserDomainName":
                        crmDomainName = item.InnerText.Trim();
                        break;
                    case "CRMUserName":
                        crmUserName = item.InnerText.Trim();

                        break;
                    case "CRMUserPassword":
                        crmUserPassword = item.InnerText.Trim();
                        break;
                    case "CRMServiceUrl":
                        crmServiceUrl = item.InnerText.Trim();
                        break;
                    case "EIPTemplateId4":
                        eipTemplateId = item.InnerText.Trim();
                        break;
                    case "EIPCreatorName":
                        eipCreatorName = item.InnerText.Trim();
                        break;
                    case "EIPUrl":
                        eipUrl = item.InnerText.Trim();
                        break;

                }
            }
            crmServiceUrl += "/XRMServices/2011/Organization.svc";
            Uri orgServiceUri = new Uri(crmServiceUrl);
            ClientCredentials credentials = new ClientCredentials();
            credentials.Windows.ClientCredential = new System.Net.NetworkCredential(crmUserName, crmUserPassword, crmDomainName);
            OrganizationServiceProxy crmServiceProxy = new OrganizationServiceProxy(orgServiceUri, null, credentials, null);

            orgService = (IOrganizationService)crmServiceProxy;
        }
        #endregion

        #region 获取用户EIP名

        /// <summary>
        /// 获取用户EIP名
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        public string GetUserEIPName(IOrganizationService service, string userId)
        {

            using (OrganizationServiceContext orgContext = new OrganizationServiceContext(service))
            {
                //查询出当前用户EIP用户名
                string eipName = string.Empty;

                var qryService = from s in orgContext.CreateQuery("systemuser")
                                 where s["systemuserid"].Equals(userId)
                                 select s;
                var qryResults = qryService.ToList();

                )
                {
                    eipName = qryResults[]["yt_eipname"].ToString();
                }
                return eipName;

            }

        }

        #endregion
        private static EntityCollection GetData(string entityName, string attributeName, string attributeValue)
        {
            QueryByAttribute query = new QueryByAttribute(entityName);//"yt_part_purchase");
            query.ColumnSet = new ColumnSet(true);
            query.AddAttributeValue();
            query.AddAttributeValue(attributeName, attributeValue);//"yt_code", purchaseCode);
            return orgService.RetrieveMultiple(query);
        }
        private static EntityCollection GetServiceData(string entityName, string attributeName, string attributeValue)
        {
            QueryByAttribute query = new QueryByAttribute(entityName);//"yt_part_purchase");
            query.ColumnSet = new ColumnSet(true);
            //query.AddAttributeValue("statecode", 0);
            query.AddAttributeValue(attributeName, attributeValue);//"yt_code", purchaseCode);
            return orgService.RetrieveMultiple(query);
        }
        /// <summary>
        /// 提示信息
        /// </summary>
        /// <param name="msg"></param>
        void AlertMsg(string msg)
        {
            Page.ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>alert('" + msg + "')</script>");
        }

        protected void BtnAdd_Click(object sender, EventArgs e)
        {
            string id = string.Empty;
            id = selcontactid.Value;
            if (!string.IsNullOrEmpty(id))
            {
                string contactstr = "'" + id + "'";
                DataTable dtContact = new DataTable();
                dtContact = QueryData(contactstr);
                )
                {
                    ; i < dtContact.Rows.Count; i++)
                    {
                        DataRow dr = DT.NewRow();
                        dr["ContactId"] = dtContact.Rows[i]["ContactId"].ToString();
                        dr["LastName"] = dtContact.Rows[i]["LastName"].ToString();
                        dr["yt_post"] = dtContact.Rows[i]["yt_post"].ToString();
                        dr["yt_postname"] = dtContact.Rows[i]["yt_postname"].ToString();
                        dr["AccountRoleCode"] = dtContact.Rows[i]["AccountRoleCode"].ToString();
                        dr["AccountRoleCodename"] = dtContact.Rows[i]["AccountRoleCodename"].ToString();
                        dr["yt_attitude"] = dtContact.Rows[i]["yt_attitude"].ToString();
                        dr["yt_attitudename"] = dtContact.Rows[i]["yt_attitudename"].ToString();
                        dr["yt_brand_remark"] = dtContact.Rows[i]["yt_brand_remark"].ToString();
                        dr["MobilePhone"] = dtContact.Rows[i]["MobilePhone"].ToString();
                        dr["customertypecode"] = dtContact.Rows[i]["customertypecode"].ToString();
                        dr["gendercode"] = dtContact.Rows[i]["gendercode"].ToString();
                        dr["yt_vehicle_category"] = dtContact.Rows[i]["yt_vehicle_category"].ToString();
                        dr["name"] = dtContact.Rows[i]["name"].ToString();
                        DT.Rows.Add(dr);
                    }
                }
                gvContact.DataSource = DT;
                gvContact.DataBind();
                string temp = string.Empty;
                ; j < gvContact.Rows.Count; j++)
                {
                    temp += "'" + gvContact.DataKeys[j]["ContactId"].ToString() + "'" + ",";
                }
                contactid1 = temp;
            }
        }
        protected void BtnDelete_Click(object sender, EventArgs e)
        {
            this.DT.Rows.Clear();
            foreach (GridViewRow item in this.gvContact.Rows)
            {
                HtmlInputCheckBox cb = (HtmlInputCheckBox)item.FindControl("chk");
                if (cb != null && !cb.Checked)
                {
                    string id = ((HtmlInputCheckBox)item.FindControl("chk")).Value.ToString();
                    if (!string.IsNullOrWhiteSpace(id))
                    {
                        Log.WriteLog(id);
                        string contactstr = "'" + id + "'";
                        DataRow[] drSelected = this.DT.Select("ContactId='" + id + "'");
                        )
                            continue;
                        #region
                        DataRow dr = this.DT.NewRow();
                        dr["ContactId"] = id;
                        dr["LastName"] = ((System.Web.UI.WebControls.Label)item.FindControl("lblname")).Text.ToString();
                        dr["yt_postname"] = ((System.Web.UI.WebControls.Label)item.FindControl("lblpost")).Text.ToString();
                        dr["AccountRoleCodename"] = ((System.Web.UI.WebControls.Label)item.FindControl("lblrole")).Text.ToString();
                        dr["yt_attitudename"] = ((System.Web.UI.WebControls.Label)item.FindControl("lblattitude")).Text.ToString();
                        dr["yt_brand_remark"] = ((System.Web.UI.WebControls.Label)item.FindControl("lblbrand")).Text.ToString();
                        dr["MobilePhone"] = ((System.Web.UI.WebControls.Label)item.FindControl("lblphone")).Text.ToString();
                        dr["customertypecode"] = ((System.Web.UI.WebControls.Label)item.FindControl("lbltypecode")).Text.ToString();
                        dr["gendercode"] = ((System.Web.UI.WebControls.Label)item.FindControl("lblgender")).Text.ToString();
                        dr["yt_vehicle_category"] = ((System.Web.UI.WebControls.Label)item.FindControl("lblcategory")).Text.ToString();
                        dr["name"] = ((System.Web.UI.WebControls.Label)item.FindControl("lblcompany")).Text.ToString();
                        this.DT.Rows.Add(dr);
                        #endregion
                    }
                }
            }
            gvContact.DataSource = this.DT;
            gvContact.DataBind();
            string temp = string.Empty;
            ; j < gvContact.Rows.Count; j++)
            {
                temp += "'" + gvContact.DataKeys[j]["ContactId"].ToString() + "'" + ",";
            }
            contactid1 = temp;
        }

        protected void GvContact_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvContact.PageIndex = e.NewPageIndex;
            gvContact.DataSource = DT.DefaultView;
            gvContact.DataBind();
        }
    }
}
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ContactLookup.aspx.cs" Inherits="AccountPlan.ContactLookup" ValidateRequest="false"  %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>查找联系人</title>
    <style type="text/css">
        #gvVehicle table td
        {
            width: 12px;
        }
    </style>
    <script type="text/javascript">
        function CbxOnClick(obj) {

            var inputs = document.getElementById("<%=gvContact.ClientID%>").getElementsByTagName("input");
            ; i < inputs.length; i++) {
                if (inputs[i].type == "checkbox") {
                    inputs[i].checked = false;
                }
            }
            obj.checked = true;
        }
        function ConfirmItem() {
            var inputs = document.getElementById("<%=gvContact.ClientID%>").getElementsByTagName("input");
            ; i < inputs.length; i++) {
                if (inputs[i].type == "checkbox" && inputs[i].checked == true) {
                    var selects = document.getElementById("<%=gvContact.ClientID%>").getElementsByTagName("select");
                    var data = {};
                    var contact = {};
                    contact.id = selects[i].options[].value;
                    contact.name = selects[i].options[].value;
                    data.contact = contact;
                    data.yt_duties = selects[i].options[].value;
                    data.yt_role = selects[i].options[].value;
                    data.yt_active = selects[i].options[].value;
                    data.yt_brandpreference = selects[i].options[].value;
                    data.yt_telephone = selects[i].options[].value;
                    data.customertype = selects[i].options[].value;
                    data.gender = selects[i].options[].value;
                    data.company = selects[i].options[].value;
                    data.category = selects[i].options[].value;
                    window.returnValue = data;
                    window.close();

                }
            }

        }
        //回车,查询数据
        function EnterKeyDown() {
            ) {
                document.getElementById("btnSearch").click();
            }
        }

        //双击选中(关闭页面)
        function ADoubleClick(obj) {
            window.open("/main.aspx?etc=2&extraqs=%3f_gridType%3d2%26etc%3d2%26id%3d%257b" + obj.id + "%257d%26pagemode%3diframe%26preloadcache%3d1447931081302%26rskey%3d892563048&pagetype=entityrecord", "_blank", false);
        }
        //单击选择
        function ASingleClick(obj) {
            //当前行只有一个input,故不判定是否为checkbox
            ];
            var inputs = document.getElementById("<%=gvContact.ClientID%>").getElementsByTagName("input");
            ; i < inputs.length; i++) {
                if (inputs[i].type == "checkbox") {
                    inputs[i].checked = false;
                }
            }
            cbx.checked = true;
        }
        function cancel() {
            window.returnValue = null;
            window.close();
        }
    </script>
    <base target="_self" />
</head>
<body style="font-size: 12px; background:#E9EDF1;" onkeydown="EnterKeyDown()">
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <table style="width: 600px; margin-left: 30px;">
        <tr>
            <td align="right">
                姓名:<asp:TextBox runat="></asp:TextBox>
            </td>
            <td>
                <asp:UpdatePanel ID="UpdatePanel2" runat="server">
                    <ContentTemplate>
                        <asp:Button runat="server" Text="查找" ID="btnSearch" OnClick="BtnSearch_Click" /></ContentTemplate>
                </asp:UpdatePanel>
            </td>
        </tr>
        <tr>
            <td colspan=">
            <tr>
                <td colspan=">
                    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                        <ContentTemplate>
                            <asp:GridView runat="server" ID="gvContact" Width="630px" HeaderStyle-BackColor="#A7CDF0"
                                AutoGenerateColumns=" onpageindexchanging="GvContact_PageIndexChanging">
                                <Columns>
                                  <asp:TemplateField ItemStyle-Width="20px">
                                    <ItemTemplate>
                                        <select style="display: none">
                                            <option value='<%#Eval("ContactId")%>'></option>
                                            <option value='<%#Eval("LastName")%>'></option>
                                            <option value='<%#Eval("yt_post")%>'></option>
                                            <option value='<%#Eval("AccountRoleCodename")%>'></option>
                                            <option value='<%#Eval("yt_like")%>'></option>
                                            <option value='<%#Eval("yt_brand_remark")%>'></option>
                                            <option value='<%#Eval("MobilePhone")%>'></option>
                                            <option value='<%#Eval("customertypecode")%>'></option>
                                            <option value='<%#Eval("gendercode")%>'></option>
                                            <option value='<%#Eval("name")%>'></option>
                                            <option value='<%#Eval("yt_vehicle_category")%>'></option>
                                        </select>
                                        <asp:CheckBox runat="server" ID="cbxVehicle" onclick="CbxOnClick(this)" />
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField ItemStyle-Width="100px" HeaderText="姓名">
                                    <ItemTemplate>
                                        <a href="javascript:void(0);" onclick="ASingleClick(this)" ondblclick="ADoubleClick(this)"
                                            style="color: black" id="<%#Eval("ContactId")%>" >
                                            <%#Eval("LastName")%></a>
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:BoundField DataField="yt_postname" HeaderText="工作职务" ItemStyle-Width="80px" />
                                <asp:BoundField DataField="AccountRoleCodename" HeaderText="决策角色" ItemStyle-Width="80px" />
                                <asp:BoundField DataField="yt_like" HeaderText="兴趣爱好" ItemStyle-Width="60px" />
                                <asp:BoundField DataField="yt_brand_remark" HeaderText="品牌偏好" ItemStyle-Width="80px" />
                                <asp:BoundField DataField="MobilePhone" HeaderText="联系方式" ItemStyle-Width="120px" />
                                <asp:BoundField DataField="customertypecode" HeaderText="民族" ItemStyle-Width="120px" />
                                <asp:BoundField DataField="gendercode" HeaderText="性别" ItemStyle-Width="120px" />
                                <asp:BoundField DataField="name" HeaderText="所属分公司" ItemStyle-Width="120px" />
                                <asp:BoundField DataField="yt_vehicle_category" HeaderText="客户类别" ItemStyle-Width="120px" />
                            </Columns>
                            </asp:GridView>
                        </ContentTemplate>
                    </asp:UpdatePanel>
                </td>
            </tr>
    </table>
    </form>
    <div style="position: absolute; right: 80px; bottom: 20px; height:30px; text-align:right;">
        <input type="button" id="btnSelect" style="margin-right: 20px" onclick="ConfirmItem()" value="确定" />
       <%-- <input type="button" onclick="cancel()" value="取消" />--%>
    </div>

</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using System.Data;
using AccountPlan.BusinessLogic;

namespace AccountPlan
{
    public partial class ContactLookup : System.Web.UI.Page
    {
        protected string accountId;
        protected string contactId;
        protected DataTable dt;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                try
                {
                    accountId = Request.QueryString["ownerid"].ToString();
                    contactId = Request.QueryString["contactid"].ToString();
                    contactId = contactId.Substring(, contactId.Length - );
                    BindGv("");
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
            }
        }
        void BindGv(string whereStr)
        {
            accountId = Request.QueryString["ownerid"].ToString();
            contactId = Request.QueryString["contactid"].ToString();
            contactId = contactId.Substring(, contactId.Length - );
            string sql = @"SELECT cb.ContactId,
                       cb.LastName,
                       c.yt_post,
                       post.name yt_postname,
                       isnull(cb.AccountRoleCode,-1) AccountRoleCode,
                       ar.name AccountRoleCodename,
                       c.yt_like,
                       c.yt_brand_remark,
                       cb.MobilePhone,
                       ct.name customertypecode,
                       gr.name gendercode,
                       m.name yt_vehicle_category ,
                      ac.name
                FROM ContactExtensionBase c
                INNER JOIN ContactBase cb ON c.ContactId = cb.ContactId
                LEFT OUTER JOIN account ac WITH(NOLOCK) ON cb.parentcustomerid = ac.accountid
                 OUTER APPLY dbo.fn_GetPickListName('Contact','yt_post',c.yt_post) post
                 OUTER APPLY dbo.fn_GetPickListName('Contact','AccountRoleCode',cb.AccountRoleCode) ar
                OUTER APPLY dbo.fn_GetPickListName('Contact','gendercode',cb.gendercode) gr
                OUTER APPLY dbo.fn_GetPickListName('Contact','customertypecode',cb.customertypecode) ct
                OUTER APPLY dbo.fn_GetPickListName('account','yt_vehicle_category',yt_vehicle_category) m
                            where
                                cb.StateCode = 0 and cb.ownerid = '" + accountId + "' and cb.contactid not in (" + contactId + ")  " + whereStr;
            DataSet ds = SqlHelper.Query(sql);
            if (ds != null)
            {
                dt = ds.Tables[];
                gvContact.DataSource = ds.Tables[].DefaultView;
                gvContact.DataBind();
            }
        }

        protected void BtnSearch_Click(object sender, EventArgs e)
        {
            StringBuilder sbWhere = new StringBuilder();
            string name = txtName.Text.Trim();
            if (name != "")
            {
                sbWhere.Append(" and cb.LastName like '%" + name + "%'");
            }
            BindGv(sbWhere.ToString());
        }

        protected void GvContact_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            StringBuilder sbWhere = new StringBuilder();
            string name = txtName.Text.Trim();
            if (name != "")
            {
                sbWhere.Append(" and cb.LastName like '%" + name + "%'");
            }
            BindGv(sbWhere.ToString());
            gvContact.PageIndex = e.NewPageIndex;
            gvContact.DataSource = dt.DefaultView;
            gvContact.DataBind();
        }
    }
}

C# GridView弹出窗口新增行 删除行的更多相关文章

  1. extjs_04_grid(弹出窗口&amp;行编辑器 CRUD数据)

    1.弹出窗口(添加.删除) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWRhbV93enM=/font/5a6L5L2T/fontsize/400/f ...

  2. 让IE8在win7下面能显示使用window.showmodaldialog弹出窗口的地址状态栏

    问题来源:最近又要对老的系统进行改善,由于用到了window.showmodaldialog这个方法弹出窗口,比如从主界面弹出新增或者修改窗口,如下图所示,显示没有地址栏,进行代码修改还要找到相应的文 ...

  3. [转]js来弹出窗口的详细说明

    1.警告对话框 <script> alert("警告文字") </script> 2.确认对话框 <script> confirm(" ...

  4. 在HTML网页中设置弹出窗口的办法

    [1.最基本的弹出窗口代码] 其实代码非常简单: <SCRIPT LANGUAGE="javascript"> <!-- window.open ('page.h ...

  5. JS弹出窗口代码大全(详细整理)

    1.弹启一个全屏窗口 复制代码代码如下: <html> <body http://www.jb51.net','脚本之家','fullscreen');">; < ...

  6. 深入浅出ExtJS 第七章 弹出窗口

    7.1 Ext.MessageBox 7.1 Ext.MessageBox //Ext.MessageBox为我们提供的alert/confirm/prompt等完全可以代替浏览器原生; 7.1.1 ...

  7. asp .NET弹出窗口 汇总(精华,麒麟创想)

    asp .NET弹出窗口 汇总(精华,麒麟创想) 注://关闭,父窗口弹出对话框,子窗口直接关闭 this.Response.Write("<script language=javas ...

  8. EPUB弹出窗口式脚注

    网上搜到一些国学典籍的EPUB版,虽有古人的注解,但正文和注解混排在一起,当我只想迅速读正文的时候比较碍眼.于是研究了一下 EPUB3 中有关脚注(footnote)的规格定义,写了一个 Python ...

  9. [置顶] html学习笔记,锚点,超链接,table布局,表头,h,sub,blockquote,ul,li,ol.dl,加入收藏,打印,弹出窗口

    <a name="shouye"></a> <strong>strong加粗</strong> <br> 没有加粗 &l ...

随机推荐

  1. 什么是dandy 风格_百度知道

    什么是dandy 风格_百度知道     什么是dandy 风格    2010-06-21 10:56 平ping123 | 分类:服装/首饰 | 浏览11257次     题谢谢     有没有比 ...

  2. 从ora10g 刷数据到 8I基本操作步骤

    从ora10g 刷数据到 8I基本操作步骤 master :oracle 10g snapshot site: oralce 8i 在oracle 8i 中物化视图称为快照,oracle 8i建快照的 ...

  3. x/nfu-用gdb查看内存

    用gdb查看内存 2007-12-08 12:43 用gdb查看内存 格式: x /nfu <addr> 说明x 是 examine 的缩写 n表示要显示的内存单元的个数 f表示显示方式, ...

  4. odd number、 even number

    odd number 奇数 even number 偶数

  5. #include <boost/asio.hpp>

    TCP服务端和客户端 TCP服务端 #include <iostream> #include <stdlib.h> #include <boost/asio.hpp> ...

  6. phonegap开发app中踩过的那些坑

    把遇到的问题列出来,假设有解决方式的,偶也会写下来.假设大家有更好解决方法的.欢迎留言噢 phonegap 2.9无法触发deviceready事件 亲们能够看下控制台有木有报错.假设有提示cordo ...

  7. Activity(三)

    常用控件 EditView.TextView.Button 设置layout,在fragment_main.xml配置控件 配置可编辑文本控件factorOne.factorTwo,显示文本控件sym ...

  8. 使用repeater开发出现 回发或回调参数无效 的问题

    我的就是因为没有加IsPostBack,导致在页面每次刷新时都生成一遍,造成重复绑定Repeater控件,以致事件验证出错,加上就好了 protected void Page_Load(object ...

  9. Spring-----事务配置的五种方式

    转载自:http://blog.csdn.net/hekewangzi/article/details/51712821

  10. Hql参数占位符使用(转+整理)

    在Hibernate 4版本中,对于Hql有一点点改变,如果你还是按照以前的方式去编写HQL Query query = sessionFactory.openSession().createQuer ...