asp.net c# DropDownList 的一个问题 继承DropDownList控件,如何实现SelectedIndex的默认值为-1,即当控件初化时让DropDownList控件不选择任何项。 将DropDownList在客户端生成的select中的selectedIndex设成-1,当页面向服务器提交时,怎样才能在服务器端得到传上来的selectedIndex值?请高手指教。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 DropDownList绑定完数据后,再加一行; Text: "" Value=-1再设DropDownList.SelectIndex=0; 感谢上面这位大哥的回复,但我不是想实现这种功能。DropDownList(id=DropDownList1)在客户端生成的select可以通过 document.all['DropDownList1'].selectedIndex=-1 设置select 未选定任何一项,我的目的就是实现:我在服务器端通过设置属性SelectedIndex=-1也可以实现未选定任何一项的效果。我想通过继承DropDownList来实现,但是如何才能获取到从客户端的select传过的selectedIndex值呢?还有AutoPostBack=false, 我从DropDownList下拉框中选择一项,然后通一个按钮来进行提交获的DropDownList控件的SelectedIndex值,这时该控件的SelectedIndex是如何传到服务器端的? 第一,你说的"让DropDownList控件不选择任何项"是不可能实现的,WEB的控件里面实现不了,但是你可以在DropDownList的数据源里面做文章(就像2楼说的),第二,你可以把DropDownList控件的SelectedIndex值传给一个隐藏控件,然后SUBMIT一下,就可以得到了. /// <summary> /// DropDownListE 的摘要说明。 /// </summary> [ DefaultProperty("Text"), ToolboxData("<{0}:DropDownListE runat=server></{0}:DropDownListE>")] public class DropDownListE : System.Web.UI.WebControls.Panel { public TextBox _txtBox ; public DropDownList _dropDownList ; public DropDownListE():base() { this.Height=22; _txtBox =new TextBox(); _dropDownList=new DropDownList(); this.Controls.Add(_txtBox); this.Controls.Add(_dropDownList);// _dropDownList.Items.Add(new ListItem("北京","北京"));// _dropDownList.Items.Add(new ListItem("六","六")); } // private string text; [Bindable(true), Category("Appearance"), DefaultValue("")] public string Text { get { return _txtBox.Text; } set { _txtBox.Text = value; } } protected override void CreateChildControls() { base.CreateChildControls (); //Controls.Add(new LiteralControl("<td></td>")); } /// <summary> /// 将此控件呈现给指定的输出参数。 /// </summary> /// <param name="output"> 要写出到的 HTML 编写器 </param> protected override void Render(HtmlTextWriter output) { //***********发送 客户端javascript 事件响应代码 start**************** _dropDownList.Width=this.Width; output.RenderBeginTag(HtmlTextWriterTag.Script); // output.AddStyleAttribute("language","javascript"); output.Write(@"var texBoxText='';function textBox_onkeyup(txtObject){ var i=0; var ddlObject='"+_dropDownList.ClientID.ToString()+@"';var j=0; var selectdll= document.all[ddlObject]; j=selectdll.length; if(event.keyCode==127 || event.keyCode==8) { var falg=false; for(i;i<j;i=i+1) { var txt=selectdll.options[i].value; if(txt==txtObject.value) { txtObject.value=txt;selectdll.options[i].selected =true; falg=true; break; } } if(!falg){selectdll.selectedIndex=-1;} } else if(texBoxText!=txtObject.value) { for(i;i<j;i=i+1) { var txt=selectdll.options[i].value; if(txt.indexOf(txtObject.value)==0) { txtObject.value=txt;selectdll.options[i].selected =true; break; } } } texBoxText=txtObject.value; // (document.all['text11']).value=selectdll.selectedIndex+selectdll.value; } "); output.RenderEndTag(); //***********发送 客户端javascript 事件响应代码 end**************** //***********发送 TextBox控件在客户端的显示属性,CSS start ***************** _txtBox.Width=Unit.Parse(Convert.ToString((_dropDownList.Width.Value-17))); _txtBox.Height=_dropDownList.Height; _txtBox.ID="_txtBox"; _txtBox.Text=_dropDownList.SelectedItem.Value; _txtBox.Style.Add( "POSITION" ,"absolute"); _txtBox.Attributes.Add("onkeyup",string.Format("textBox_onkeyup(this);")); //***********发送 TextBox控件在客户端的显示属性,CSS end ***************** //_txtBox.RenderControl(output); //*************下拉控件相关Css、事件 start************ _dropDownList.Style.Add("VISIBILITY","visible"); _dropDownList.Style.Add("POSITION","absolute"); _dropDownList.Attributes.Add("onchange","var txtBox=document.all['"+_txtBox.ClientID+"'];txtBox.value=(document.all['"+_dropDownList.ClientID+"']).value;"); _dropDownList.Style.Add("CLIP",string.Format("rect(0px {0}px 80px {1}px)",Convert.ToInt32(_dropDownList.Width.Value),Convert.ToInt32(_dropDownList.Width.Value-18))); //*************下拉控件相关Css、事件end ************ //_dropDownList.RenderControl(output); base.Render(output); } }***************************************************大家请看一下这段代码,我实例化后想通过按钮来进行提交得到TextBox 控件中的Text,但我发现这样跟本得不到,但通过DropDownListE 控件的下拉选择后再进行按钮来进行提交 DropDownList控件的信息却能够得,请问这种情况如何进行解觉啊?照理说我通过this.Controls.Add(_txtBox); this.Controls.Add(_dropDownList);自定义控件DropDownListE里的TextBox 和DropDownList的 ViewState值应该能够回传到服务的。但事实上TextBox 回传不了,而DropDownList却可以。 求一正则表达式(或其它方式)替换内容中图片的大小 按A-Z进行显示中国所有省级市级城市,然后对应到A-Z C#重绘问题 c#编写dll问题 treeivew 问题 选中节点操作 后 刷新 但之前选中节点继续保持选中状态 类是押注的程序,该怎么写??? 关于C# 连接Oracle的查询数据不存数据库在问题 大家好,问题很急,谢谢大家了! 获取当前的日期 用C#作ASP的时候,怎么样在DataGrid进行竖加总? 如何设置默认的的编码 Command提交SQL语句,怎么老报错啊?
再设DropDownList.SelectIndex=0;
DropDownList(id=DropDownList1)在客户端生成的select可以通过 document.all['DropDownList1'].selectedIndex=-1 设置select 未选定任何一项,我的目的就是实现:我在服务器端通过设置属性SelectedIndex=-1也可以实现未选定任何一项的效果。我想通过继承DropDownList来实现,但是如何才能获取到从客户端的select传过的selectedIndex值呢?还有AutoPostBack=false, 我从DropDownList下拉框中选择一项,然后通一个按钮来进行提交获的DropDownList控件的SelectedIndex值,这时该控件的SelectedIndex是如何传到服务器端的?
第二,你可以把DropDownList控件的SelectedIndex值传给一个隐藏控件,然后SUBMIT一下,就可以得到了.
/// DropDownListE 的摘要说明。
/// </summary>
[
DefaultProperty("Text"),
ToolboxData("<{0}:DropDownListE runat=server></{0}:DropDownListE>")]
public class DropDownListE : System.Web.UI.WebControls.Panel
{
public TextBox _txtBox ;
public DropDownList _dropDownList ;
public DropDownListE():base()
{
this.Height=22;
_txtBox =new TextBox();
_dropDownList=new DropDownList();
this.Controls.Add(_txtBox);
this.Controls.Add(_dropDownList);
// _dropDownList.Items.Add(new ListItem("北京","北京"));
// _dropDownList.Items.Add(new ListItem("六","六"));
} // private string text;
[Bindable(true),
Category("Appearance"),
DefaultValue("")]
public string Text
{
get
{
return _txtBox.Text;
}
set
{
_txtBox.Text = value;
}
}
protected override void CreateChildControls()
{
base.CreateChildControls ();
//Controls.Add(new LiteralControl("<td></td>")); } /// <summary>
/// 将此控件呈现给指定的输出参数。
/// </summary>
/// <param name="output"> 要写出到的 HTML 编写器 </param>
protected override void Render(HtmlTextWriter output)
{
//***********发送 客户端javascript 事件响应代码 start****************
_dropDownList.Width=this.Width;
output.RenderBeginTag(HtmlTextWriterTag.Script);
// output.AddStyleAttribute("language","javascript");
output.Write(@"var texBoxText='';function textBox_onkeyup(txtObject){ var i=0; var ddlObject='"+_dropDownList.ClientID.ToString()+@"';var j=0; var selectdll= document.all[ddlObject]; j=selectdll.length;
if(event.keyCode==127 || event.keyCode==8)
{ var falg=false;
for(i;i<j;i=i+1) { var txt=selectdll.options[i].value;
if(txt==txtObject.value)
{
txtObject.value=txt;selectdll.options[i].selected =true;
falg=true;
break;
}
}
if(!falg){selectdll.selectedIndex=-1;}
}
else if(texBoxText!=txtObject.value)
{
for(i;i<j;i=i+1)
{ var txt=selectdll.options[i].value;
if(txt.indexOf(txtObject.value)==0)
{
txtObject.value=txt;selectdll.options[i].selected =true;
break;
}
}
}
texBoxText=txtObject.value;
// (document.all['text11']).value=selectdll.selectedIndex+selectdll.value;
}
");
output.RenderEndTag();
//***********发送 客户端javascript 事件响应代码 end**************** //***********发送 TextBox控件在客户端的显示属性,CSS start *****************
_txtBox.Width=Unit.Parse(Convert.ToString((_dropDownList.Width.Value-17)));
_txtBox.Height=_dropDownList.Height;
_txtBox.ID="_txtBox";
_txtBox.Text=_dropDownList.SelectedItem.Value;
_txtBox.Style.Add( "POSITION" ,"absolute");
_txtBox.Attributes.Add("onkeyup",string.Format("textBox_onkeyup(this);"));
//***********发送 TextBox控件在客户端的显示属性,CSS end *****************
//_txtBox.RenderControl(output); //*************下拉控件相关Css、事件 start************
_dropDownList.Style.Add("VISIBILITY","visible");
_dropDownList.Style.Add("POSITION","absolute");
_dropDownList.Attributes.Add("onchange","var txtBox=document.all['"+_txtBox.ClientID+"'];txtBox.value=(document.all['"+_dropDownList.ClientID+"']).value;");
_dropDownList.Style.Add("CLIP",string.Format("rect(0px {0}px 80px {1}px)",Convert.ToInt32(_dropDownList.Width.Value),Convert.ToInt32(_dropDownList.Width.Value-18)));
//*************下拉控件相关Css、事件end ************
//_dropDownList.RenderControl(output); base.Render(output);
}
}
***************************************************
大家请看一下这段代码,我实例化后想通过按钮来进行提交得到TextBox 控件中的Text,但我发现这样跟本得不到,但通过DropDownListE 控件的下拉选择后再进行按钮来进行提交 DropDownList控件的信息却能够得,请问这种情况如何进行解觉啊?照理说我通过this.Controls.Add(_txtBox); this.Controls.Add(_dropDownList);自定义控件DropDownListE里的TextBox 和DropDownList的 ViewState值应该能够回传到服务的。但事实上TextBox 回传不了,而DropDownList却可以。