前台代码:
<asp:TextBox ID="txtExpression" runat="server" MaxLength="400" CssClass="TextBox400"
ontentEditable="false" />
<br />
<asp:Label ID="lblAvaliableColumns" runat="server"></asp:Label>
<asp:DropDownList ID="ddlFields" runat="server" CssClass="DropDownList200">
</asp:DropDownList>
<asp:ImageButton ID="ibnAddField" runat="server" ImageUrl="~/Images/add.png" />
前台代码比较简单,就一个文本框和下拉列表框,还有一个按钮,点击后将下拉列表框的选项插入到文本框中。
后台代码:
/// <summary>
/// PreRender event handler
/// </summary>
/// <param name="e"></param>
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
#region Register Client Script for Text treatment
string txtScript, txtScriptName;
#region All language usage
txtScript = @"
<script type='text/javascript' language='javascript'>
function insertInputText(input_obj, text){
var prefix;
var tail;
if(typeof(input_obj.selectionStart)=='undefined'){
prefix=input_obj.value;
tail = '';
}
else{
prefix = input_obj.value.substr(0, input_obj.selectionStart);
tail = input_obj.value.substr(input_obj.selectionEnd);
}
input_obj.value = prefix + text + tail;
}
</script>
";
txtScriptName = "ScriptForAllLanguage";
this.Page.ClientScript.RegisterClientScriptBlock(GetType(), txtScriptName, txtScript);
#endregion
#region Different with Language
txtScript = @"
<script type='text/javascript' language='javascript'>
function insertToExpression(){
var objInsert;
objInsert = document.getElementById('" + ddlFields.ClientID + @"');
var text = ' ' + objInsert.value + ' ';
var objTextArea = document.getElementById('" + txtExpression.ClientID + @"');
insertInputText(objTextArea, text)
}
</script>
";
txtScriptName = "TextTreatmentScript";
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), txtScriptName, txtScript);
#endregion
#endregion
#region Set client events with functions registered here
ibnAddField.OnClientClick = "insertToExpression(); return false;";
#endregion
}
后台代码通过OnPreRender事件,将JS加载到按钮上。