(十)ASP.NET自定义用户控件(3)

using HX.DHL.EIP.Services.Def.Localization;
using HX.DHL.EIP.Web.Framework;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Windows.Forms;

namespace HX.DHL.EIP.Web.UserControl
{
    public partial class TabLocatedRender : EIPUserControlBase
    {
        public ILanguageService Languageservice { get; set; }
        public string FirstInputData="";
        public string SecondInputData = "";
        public string DefaultDivId = "";
        //新建一个容器
        StringBuilder LgTab = new StringBuilder();
        protected void Page_Load(object sender, EventArgs e)
        {

            LgTab.Append("<div>");
            LgTab.Append("<table style=‘padding: 0px; margin: 0px; height: 100%;‘ cellpadding=‘0‘ cellspacing=‘0‘>");
            LgTab.Append("<tr>");
            LgTab.Append("<td id=‘menutab‘ style=‘vertical-align: bottom;‘>");
            LgTab.AppendLine("<input  ID=‘CurrentLanguage‘ type=‘hidden‘ />");
            LgTab.AppendLine("<input  ID=‘FirstInput‘ type=‘hidden‘/>");
            LgTab.AppendLine("<input  ID=‘SecondInput‘  type=‘hidden‘/>");
            //LgTab.Append("<form  method=‘post‘  name=‘‘ action=‘~/Base/Language/Form.aspx‘/>");
            LgTab.AppendLine("<input  ID=‘AllLocalData‘ name=‘AllLocalDataName‘ />");
            //LgTab.Append("</form>");
            //取数据库中语言
            var lgdata = this.Languageservice.GetAllLanguages(false);
            foreach (var lg in lgdata)
            {
                var innerHtml = lg.Name;
                var divId = lg.LanguageCulture;
                LgTab.AppendLine(string.Concat(new object[]
                        {
                            "<div id=‘",divId,"‘ onclick=\"ChangeDiv(‘",divId,"‘)\">"+innerHtml+"</div>"
                        }));
            }
            DefaultDivId = lgdata.First().LanguageCulture;
            LgTab.Append(" <script type=‘text/javascript‘>");
            LgTab.AppendLine(string.Concat(new object[]
                        {
                            "document.getElementById(\"CurrentLanguage\").value = ‘",DefaultDivId,"‘;"
                        }));
            LgTab.AppendLine(string.Concat(new object[]
                        {
                            "document.getElementById(\"FirstInput\").value = ‘",FirstInputData,"‘;"
                        }));
            LgTab.AppendLine(string.Concat(new object[]
                        {
                            "document.getElementById(\"SecondInput\").value = ‘",SecondInputData,"‘;"
                        }));
            LgTab.Append("var templg = $(\"#CurrentLanguage\").val();");
            LgTab.Append("var FirstInputData = $(\"#FirstInput\").val();");
            LgTab.Append("var SecondInputData = $(\"#SecondInput\").val();");
            LgTab.Append("GetTabClick($(\"#\" + templg)[0]);");
            LgTab.Append("var arr = new Array();");
            LgTab.Append("var AllData=\"\";");
            //多语言的字段需加属性onblur,失去焦点时保存本页多语言字段。
            LgTab.Append("$(\"#\"+FirstInputData).onblur = SaveThisTab();");
            LgTab.Append("$(\"#\"+SecondInputData).onblur = SaveThisTab();");
            LgTab.Append(string.Concat(new object[]
                        {

                            "function ChangeDiv(divId){SaveThisTab(divId);ChangeTab(divId);TakeNextTab(divId);}"
                        }));
            LgTab.Append(string.Concat(new object[]
                        {

                            "function ChangeTab(divId){ GetTabClick($(\"#\" + divId)[0]);document.getElementById(\"CurrentLanguage\").value = divId;}"
                        }));
            LgTab.Append(string.Concat(new object[]
                        {
                            "function SaveThisTab(){ var ThisDivId = $(\"#CurrentLanguage\").val();var FirstInputDataString = $(\"#",FirstInputData,"\").val();var SecondInputDataString = $(\"#",SecondInputData,"\").val();arr[ThisDivId]=FirstInputDataString+\"|\"+SecondInputDataString;AllData=\"\";for(var lgId in arr){AllData=AllData+lgId+\":\"+arr[lgId]+\";\";}document.getElementById(\"AllLocalData\").value = AllData;}"
                        }));
            LgTab.Append(string.Concat(new object[]
                        {
                            "function TakeNextTab(divId){document.getElementById(\"",FirstInputData,"\").value = null;document.getElementById(\"",SecondInputData,"\").value = null;if(arr[divId]!=null){var strs=arr[divId].split(\"|\");document.getElementById(\"",FirstInputData,"\").value = strs[0];document.getElementById(\"",SecondInputData,"\").value = strs[1];}}"
                        }));
            LgTab.Append("</script>");
            LgTab.Append("</td>");
            LgTab.Append("</tr>");
            LgTab.Append("</table>");
            LgTab.Append("</div>");

            lt.Text = LgTab.ToString();
        }
        public void GetInput(string inputone, string inputtwo)
        {
            FirstInputData = inputone;
            //FirstInputData = "CurrentLanguage";
            if (inputtwo == "")
            {
                SecondInputData = inputone;
            }
            else
            {
                SecondInputData = inputtwo;
            }
        }
    }
}

上述是TabLocatedRender.ascx.cs的内容

然后在TabLocatedRender.ascx这里面放入一个占位符,插入后台的东西

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TabLocatedRender.ascx.cs" Inherits="HX.DHL.EIP.Web.UserControl.TabLocatedRender" %>
<script src="/Themes/Scripts/Common/common.js"></script>
<asp:Literal ID="lt" runat="server"></asp:Literal>

然后一个简单的自定义控件就生成了。

这样的控件在使用的时候呢,Form.aspx必须要有@Register

<%@ Page Title="语言管理" Language="C#" MasterPageFile="~/Base/Base.Master" AutoEventWireup="true" CodeBehind="Form.aspx.cs" Inherits="HX.DHL.EIP.Web.Base.Language.Form" %>

<%@ Register Src="~/UserControl/TabLocatedRender.ascx" TagPrefix="uc1" TagName="TabLocatedRender" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">

</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <uc1:TabLocatedRender runat="server" id="TabLocatedRender" />
   <%-- <div>
        <table style="padding: 0px; margin: 0px; height: 100%;" cellpadding="0" cellspacing="0">
            <tr>
                <td id="menutab" style="vertical-align: bottom;">
                    <asp:TextBox ID="CurrentLanguage" runat="server" CssClass="hidden"></asp:TextBox>
                    <script type="text/javascript">
                        function addDiv() {
                            var param = "";
                            AjaxAction(‘/Base/Language/Form.aspx‘, ‘GetItems‘, param, function (rs) {
                                var items = rs.Data;
                                $.each(items, function (i, v) {
                                    var item = v;
                                    var div = document.createElement("div");
                                    div.id = item.LanguageCulture;
                                    div.innerHTML = item.Name;
                                    div.onclick = function remo() {
                                        CallWebMethod("ChangeTab", "", this.id);
                                    };
                                    menutab.appendChild(div);
                                });

                                //$("#tab1")[0]    其中$("#tab1")这个是jquery的对象,加[0]转换成document对象
                                var templg = $("#CurrentLanguage").val();
                                GetTabClick($("#" + templg)[0]);
                            });

                        }
                    </script>
                </td>
            </tr>
        </table>
    </div>--%>
    <table class="frm" id="langTable">
         <tr>
            <th><span id="result_box" class="short_text" lang="zh-CN"><span>语言</span><span class="">文化</span></span>:
            </th>
            <td>
                <select id="LanguageCulture" class="middleplus_width" runat="server" datatype="*1-20"  enableviewstate="true"></select>
            </td>
        </tr>
        <tr>
            <th>
                <%--<img src="/Themes/Images/16/flag_orange.png" />--%>
                <span class="localization">名称:</span>
            </th>
            <td>
                <input id="Name" runat="server" type="text"   datatype="*1-20"  class="localization_background" value="多语言字段"/>
            </td>
        </tr>
        <tr>
            <th><span id="result_box0" class="short_text" lang="zh-CN"><span class="">SEO代码</span></span>:
            </th>
            <td>
                <input id="UniqueSeoCode" runat="server" type="text" datatype="*1-2"  style="width:90%" />
            </td>
        </tr>
        <tr>
            <th>国旗图标:
            </th>
            <td>
                <input id="txtFlagImageFileName" type="hidden" runat="server"/>
                <img id="imgbutton" src="/Themes/Images/illustration.png" runat="server" alt=""
                    style="vertical-align: middle; padding-right: 10px;" />
                <a id="selectFlag" href="javascript:void(0)" class="button green" onclick="SelectOpenImg()">选择国旗</a>
            </td>
        </tr>
        <tr>
            <th>从右到左:
            </th>
            <td>
                <%--datacol="yes" err="自定义"--%>
                <%--<input id="Rtl" runat="server" type="text" datatype="*1-20" style="width:90%" />--%>
                <input id="Rtl" type="checkbox" runat="server" onclick="" style="width:90%" />
            </td>
        </tr>
         <tr>
            <th>语言编号:
            </th>
            <td>
                <%--datacol="yes" err="自定义"这两个属性值目前是有没有都可以--%>
                <input id="OrderID" runat="server" type="text" datatype="n1-20"  style="width:90%" />
            </td>
         </tr>
    </table>

    <div class="frm-bottom-center">
        <asp:LinkButton ID="Save" runat="server" class="l-btn" OnClientClick="return Valid(‘form1‘);"
            OnClick="Save_Click"><span class="l-btn-left">
            <img src="/Themes/Images/disk.png" alt="" />保 存</span></asp:LinkButton>
        <a class="l-btn" href="javascript:void(0)" onclick="OpenClose();"><span class="l-btn-left">
            <img src="/Themes/Images/cancel.png" alt="" />关 闭</span></a>

    </div>
</asp:Content>

<asp:Content ID="Content3" ContentPlaceHolderID="FooterScript" runat="server">
     <script type="text/javascript">
         //初始化
         $(function () {
         //    addDiv();
         //    var templg = $("#CurrentLanguage").val();
         //    GetTabClick($("#"+templg)[0]);
             //var arrr = new Array();
             //var a = "";
             //arrr["qq"] = "qqq";
             //arrr["ww"] = "www";
             //for (var item in arrr) {
             //    alert(arrr[item]);
             //    a = a + item + ":" + arrr[item];
             //    alert(a);
             //}
         })

        function onkeyButton_Name(text) {
            $("#Button_Title").val(text);
        }
        //全取系统图标
        function SelectOpenImg() {
            var url = "/Base/Menu/IconsList.aspx?Size=16&prefix=flag";
            top.openDialog(url, ‘Icons_List‘, ‘国旗图标 - 全取‘, 615, 400, 100, 100);
        }
        //全取图标回调赋值
        function Get_Menu_Img(img) {
            $("#imgbutton").attr("src", ‘/Themes/Images/16/‘ + img);
            $("#txtFlagImageFileName").val(img);

        }

        $("#txtType_0").click(function () {
            $("#ImgType").attr("disabled", true);
            $("#Src").attr("disabled", true);
        });
        $("#txtType_1").click(function () {
            $("#ImgType").attr("disabled", false);
            $("#Src").attr("disabled", false);

        });

    </script>

</asp:Content>

这样就加入了该文件中的内容

时间: 2024-08-01 19:52:42

(十)ASP.NET自定义用户控件(3)的相关文章

(九)ASP.NET自定义用户控件(2)

http://www.cnblogs.com/SkySoot/archive/2012/09/04/2670678.html 用户控件 在 .NET 里,可以通过两种方式把自己的控件插入到 Web 窗体框架中: 用户控件:它是一小段页面,可以包括静态 HTML 代码和 Web 服务器控件.用户控件的好处是一旦创建了它,就可以在同一个 Web 应用程序的多个页面重用它.用户控件可以加入自己的属性,事件和方法. 自定义服务器控件:它是被编译的类,它通过编程生成自己的 HTML .服务器控件总是预编译

(八)ASP.NET自定义用户控件(1)

http://blog.csdn.net/laodao1/article/details/5897366 ASP.NET自定义控件组件开发 第一章:从一个简单的控件谈起 起始开发ASP.NET自定义控件不是那么的高深,当初我开始学的时候还有点恐惧,但是慢慢就好了.学习控件的开发技术,并不一定说以后要从事控件的开发,而是让我们深入的理解掌握ASP.NET内部的机理.你会发觉,当学习完控件开发技术后,你以后开发网站时有种得心应手的感觉.我不希望一上来就讲控件开始多么多么难啊,我会用一个演化的方法来讲

Android自定义用户控件简单范例(一)

一款优秀的移动应用需要具有自己独特统一的风格,通常情况下UI设计师会根据产品需求和使用人群的特点,设计整体的风格,界面的元素和控件的互效果.而原生态的Android控件为开发人员提供的是最基本的积木元素,如果要准确地传递统一的视觉效果和交互体验,对控件的自定义使用是非常有必要的. 这篇文章通过一个简单的从Java后台程序中进行创建的示例来说明Android自定义控件的运行原理. <LinearLayout xmlns:android="http://schemas.android.com/

Android自定义用户控件简单范例(二)

对于完全由后台定制的控件,并不是很方便其他人的使用,因为我们常常需要看到控件放到xml界面上的效果,并根据效果进行布局的调整,这就需要一个更加标准的控件制作流程: 我们的自定义控件和其他的控件一样,应该写成一个类,而这个类的属性是是有自己来决定的. 我们要在res/values目录下建立一个attrs.xml的文件,并在此文件中增加对控件的属性的定义. 使用AttributeSet来完成控件类的构造函数,并在构造函数中将自定义控件类中变量与attrs.xml中的属性连接起来. 在自定义控件类中使

Windows Phone 8.1中自定义用户控件及如何调用用户控件

对于有些强迫症的我,还是作为程序员,在自己编程的世界里,凡事都要按照自己的意愿来安排布局或者设计动画等 等.虽说微软已经给我们封装了太多太多的控件和模板,但是难免有时候不会符合我们的意愿和要求,在这个时候就 需要我们自己来设计用户自定义控件. 首先需要在VS中创建自定义控件,所以需要在项目名右击->添加->新建项->选择User Control(用户控件)->添加 结合之前一篇提及到的XAML语法和开头的定义的说明,这边借自定义用户控件和引用自定义控件进一步说明. 之前博客中见到X

asp.net在用户控件中使用ClientScript

在用户空间中调用ClientScript.RegisterClientScriptBlock方法 ClientScript的命名空间是System.Web.UI.Page,并且要实例化之后的Page才能条用ClientScript. 用户自定义空间不是继承自Page,因此不能直接使用ClientScript这个类.如果要使用这个类,需要通过找到调用页面对象的方式.具体做法: this.Parent.Page 找到这个对象之后,就可以像在普通页面中一样,自由调用System.Web.UI.Page

Windows phone 在自定义用户控件(UserControl)——ColorPicker

编码前 学习Windows phone自定义用户控件,在<WPF编程宝典>学习的小例子.并根据windows phone稍微的不同,做了点修改.ColorPicker(颜色拾取器):拥有三个Slider代表颜色中的RGB的值,可以进行调节各自的值.还有一个显示颜色的区域,它的值可以设置,也可以随着三个Slider值得变化而变化.其中每个Slider值也要根据颜色区域而变化.还要提供一个能由外部看到的可注册事件. 依赖属性: 设置四个依赖属性:分别为ColorProperty,RedProper

在Winform界面使用自定义用户控件及TabelPanel和StackPanel布局控件

在很多时候,我们做一些非常规化的界面的时候,往往需要创建一些用户控件,在其中绘制好一些基础的界面块,作为后续重复使用的一个单元,用户控件同时也可以封装处理一些简单的逻辑.在开发Winform各种类型项目,我都时不时需要定制一些特殊的用户控件,以方便在界面模块中反复使用.我们一般是在自定义的用户控件里面,添加各种各样的界面控件元素,或者封装一些特殊的函数处理共外部调用等.本篇随笔主要介绍基于DevExpress的Winform开发经验,介绍一个类似看板信息的用户控件,并在TabelLayout和S

【asp.net】用户控件&amp;自定义控件

在原来的学习中,从vb到asp.net我们都接触了很多的控件,这些控件为我们的程序开发提供了很多的便利,在程序开发中,许多功能或代码都需要重复的使用,我们在牛腩的时候学习了模板方法和重复代码添加工具箱调用的方法,提高了效率.在功能方面使用了母版页,在asp.net中又学习了用户控件和自定义控件,开发人员可以自行开发用户控件和自定义控件以提高代码的复用性.下面来简单介绍一下这两种控件. 一.用户控件: 定义: 用户控件是用户自定义的可重用的一种控件,用户控件用.ascx文件表示,它不是编译代码,编