(十)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>
这样就加入了该文件中的内容
(十)ASP.NET自定义用户控件(3)的更多相关文章
- (九)ASP.NET自定义用户控件(2)
http://www.cnblogs.com/SkySoot/archive/2012/09/04/2670678.html 用户控件 在 .NET 里,可以通过两种方式把自己的控件插入到 Web 窗 ...
- (八)ASP.NET自定义用户控件(1)
http://blog.csdn.net/laodao1/article/details/5897366 ASP.NET自定义控件组件开发 第一章:从一个简单的控件谈起 起始开发ASP.NET自定义控 ...
- Windows phone 自定义用户控件(UserControl)——ColorPicker
编码前 学习Windows phone自定义用户控件,在<WPF编程宝典>学习的小例子.并根据windows phone稍微的不同,做了点修改.ColorPicker(颜色拾取器):拥有三 ...
- 2018-8-10-win10-uwp-验证输入-自定义用户控件
title author date CreateTime categories win10 uwp 验证输入 自定义用户控件 lindexi 2018-08-10 19:16:51 +0800 201 ...
- 在Winform界面使用自定义用户控件及TabelPanel和StackPanel布局控件
在很多时候,我们做一些非常规化的界面的时候,往往需要创建一些用户控件,在其中绘制好一些基础的界面块,作为后续重复使用的一个单元,用户控件同时也可以封装处理一些简单的逻辑.在开发Winform各种类型项 ...
- asp.net读取用户控件,自定义加载用户控件
1.自定义加载用户控件 ceshi.aspx页面 <html> <body> <div id="divControls" runat="se ...
- 浅尝辄止WPF自定义用户控件(实现颜色调制器)
主要利用用户控件实现一个自定义的颜色调制控件,实现一个小小的功能,具体实现界面如下. 首先自己新建一个wpf的用户控件类,我就放在我的wpf项目的一个文件夹下面,因为是一个很小的东西,所以就没有用mv ...
- C# 自定义用户控件
上篇:控件制作 本例是制作一个简单的自定义控件,然后用一个简单的测试程序,对于初学者来说,本例子比较简单,只能起到抛石引玉的效果.我也是在学习当中,今后会将自己所学的逐步写出来和大家交流共享. 第一步 ...
- ASP.NET的用户控件
本文介绍如何在ASP.NET中创建用户控件,控件属性的动态修改以及控件的事件出发机制. 简介ASP.NET的服务端控件使得Web开发工作变得更为简单,功能更为强大.我们介绍过如何在ASP.NET页面中 ...
随机推荐
- oracle驱动包maven下载失败解决
oracle是付费的,因此jar包也不是随便让人下的,这就给maven的下载和编译带来了麻烦,因为我们没法从maven仓库直接拿来用.解决办法就是先从别的地方获取jar包,再放到本地仓库里去,这样运行 ...
- OPCDAAuto.dll的C#使用方法浅析(转载)
上次研究了.Net版本的OPC API dll,这次我采用OPCDAAuto.dll来介绍使用方法.以下为我的源代码,有详细的注释无需我多言.编译平台:VS2008SP1.WINXP.KEPServe ...
- 学习FPGA有必要写SDRAM控制器吗?
在学习FPGA的过程中,注意是在学习过程中,联系FPGA的使用技巧,强烈建议尝试设计一个SDRAM控制器,不要使用IP核. 学习SDRAM控制器设计,能让你掌握很多知识. 更好的使用状态机去精准控制时 ...
- jQuery笔记——DOM操作
在 JavaScript 中,DOM 不但内容庞大繁杂,而且我们开发的过程中需要考虑更多的兼容性.扩展性.在 jQuery 中,已经将最常用的 DOM 操 作方法进行了有效封装,并且不需要考虑浏览器的 ...
- MSBuild最佳实践
http://stackoverflow.com/questions/3097489/how-to-publish-web-with-msbuild ref: http://msdn.microsof ...
- Python Twisted系列教程6:抽象地利用Twisted
作者:dave@http://krondo.com/and-then-we-took-it-higher/ 译者:杨晓伟(采用意译) 你可以从这里从头开始阅读这个系列. 打造可以复用的诗歌下载客户端 ...
- 01 java断言assert初步使用:断言开启、断言使用
参考文件:http://blog.sina.com.cn/s/blog_59c9412d0100fd55.html 1 说明 java断言assert是jdk1.4引入的. jvm断言默认是关闭的. ...
- 局域网内的一些计算机可以ping通 有些ping不同
如何查看.添加.修改.删除电脑内部路由_百度经验https://jingyan.baidu.com/article/77b8dc7fc611626174eab6cb.html
- Reporting Service中配置oracle 数据连接
一.安装配置报表服务器 数据源 1.安装oracle客户端32位“Oracle - OraClient11g_home1_32bit” 2.配置监听及tnsnames.ora 3.配置ODBC 添加一 ...
- Python和其他语言的区别 (简单精辟啊 手打)
首先是简单 读和写非常容易 免费 免费且开源 社区为专业人士和初学者提供知识和经验的分享交流平台 兼容性 与多平台兼容 面向对象 支持面向对象编程 php面向网络 函数库 python 社区创建了丰富 ...