(十)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页面中 ...
随机推荐
- (转)Android强制设置横屏或竖屏
全屏 在Activity的onCreate方法中的setContentView(myview)调用之前添加下面代码 requestWindowFeature(Window.FEATURE_NO_TIT ...
- maven help:system
lifecycle:http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html bindings:ht ...
- Internet上的网络层
TCP/IP协议栈第三层是网络层,网络层的目的是实现两个系统之间的数据透明传送,具体功能包括寻址和路由选择.连接和建立.保持和终止等. TCP/IP协议给internet上的每台主机和路由分配一个地址 ...
- 复制书稿(book) (二分,贪心+dp)
复制书稿(book) 时间限制: 1 Sec 内存限制: 128 MB提交: 3 解决: 1[提交][状态][讨论版][命题人:quanxing] 题目描述 现在要把m本有顺序的书分给k个人复制( ...
- 网络监控之一:netstat命令
netstat命令用于显示与IP.TCP.UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况.netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP ...
- winfrom绘制渐变 / 调用浏览器访问指定地址
private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) {//绘制渐变色背景 Graphics g ...
- Python实现SSH传输文件(sftp)
Windows通过ssh给Linux发送文件 #-*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" import paramiko t ...
- 优化深度神经网络(二)优化算法 SGD Momentum RMSprop Adam
Coursera吴恩达<优化深度神经网络>课程笔记(2)-- 优化算法 深度机器学习中的batch的大小 深度机器学习中的batch的大小对学习效果有何影响? 1. Mini-batch ...
- GO语言文件的创建与打开实例分析
本文实例分析了GO语言文件的创建与打开用法.分享给大家供大家参考.具体分析如下: 文件操作是个很重要的话题,使用也非常频繁,熟悉如何操作文件是必不可少的.Golang 对文件的支持是在 os pack ...
- java Web中页面跳转方式之请求转发
1.在一个请求中跨越多个Servlet 2.多个Servlet在一个请求中,他们共享request对象.就是在Servlet01中setAttribute()保存数据在Servlet02中由getAt ...