none
ASP.NET实现多列的dropdownlist? RRS feed

答案

  • 可以使用GridView+TextBox来实现。。点击textbox的时候弹出gridview 然后点击gridview行的时候 将数据填入textbox!
    2012年4月27日 3:16
    版主
  • 给你放上现成的代码:

    default2.aspx

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>无标题页</title> </head> <body> <form id="form1" runat="server"> <div> <table> <tr><td> <asp:TextBox ID="TextBox1" runat="server" onkeypress="if(event.keyCode==32){showGV(true);}else{showGV(false);}"></asp:TextBox> </td></tr> <tr id="trGv" style="position:absolute;visibility:hidden"><td> <asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound"></asp:GridView> </td></tr> </table> &nbsp;</div> </form> <script type="text/javascript"> function showGV(bVisi){ var oRow=document.getElementById("trGv"); oRow.style.visibility= bVisi ? "visible" : "hidden"; } function onCell_Click(oSrc){ var isIe=window.navigator.appName.indexOf("Netscape") == -1?true:false; var oTxt=document.getElementById("<%=TextBox1.ClientID %>"); var sTxt=isIe?oSrc.innerText:oSrc.textContent; oTxt.value=sTxt; showGV(false); } </script> </body> </html> 

    default2.aspx.cs

    using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class Default2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { GridView1.DataSource = GenerateTable(); GridView1.DataBind(); } } private DataTable GenerateTable() { DataTable dt = new DataTable(); dt.Columns.Add("ID", typeof(int)); dt.Columns.Add("Name", typeof(string)); DataRow row; Random rnd = new Random(); for (int i = 1; i != 10; ++i) { row = dt.NewRow(); row[0] = i; row[1] = "Product_" + i; dt.Rows.Add(row); } return dt; } protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { TableCellCollection cells = e.Row.Cells; foreach (TableCell cell in cells) { cell.Attributes.Add("onclick", "onCell_Click(this)"); } } } 

    2012年4月28日 1:13
    版主

全部回复

  • 或许你可以参考孟子e章上的文章。

    http://dotnet.aspx.cc/article/c81ad80e-fc14-4ff8-85f3-16cc68811bd5/read.aspx


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年4月27日 2:51
  • 可以使用GridView+TextBox来实现。。点击textbox的时候弹出gridview 然后点击gridview行的时候 将数据填入textbox!
    2012年4月27日 3:16
    版主
  • 楼上的办法真是很巧妙
    2012年4月27日 16:10
  • 1. 先准备一个style="display:none;background-color:gray;width:100px;height:100px;"的div

    2. 当滑鼠点击textbox时候,用jQuery呼叫slideToggle函数显示该div

    3. 当滑鼠点擊div里的文字时候,再用jQuery呼叫slideToggle函数来隐藏此div,并把刚刚点擊的文字用.text()函数取得并填入textbox

    原理大概是这样

    类似的控件可以用关键字找找jQuery DropDownlist

    http://www.designdim.com/2011/07/10-important-jquery-selectboxdropdown-plugins/


    2012年4月27日 16:31
  • 给你放上现成的代码:

    default2.aspx

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>无标题页</title> </head> <body> <form id="form1" runat="server"> <div> <table> <tr><td> <asp:TextBox ID="TextBox1" runat="server" onkeypress="if(event.keyCode==32){showGV(true);}else{showGV(false);}"></asp:TextBox> </td></tr> <tr id="trGv" style="position:absolute;visibility:hidden"><td> <asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound"></asp:GridView> </td></tr> </table> &nbsp;</div> </form> <script type="text/javascript"> function showGV(bVisi){ var oRow=document.getElementById("trGv"); oRow.style.visibility= bVisi ? "visible" : "hidden"; } function onCell_Click(oSrc){ var isIe=window.navigator.appName.indexOf("Netscape") == -1?true:false; var oTxt=document.getElementById("<%=TextBox1.ClientID %>"); var sTxt=isIe?oSrc.innerText:oSrc.textContent; oTxt.value=sTxt; showGV(false); } </script> </body> </html> 

    default2.aspx.cs

    using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class Default2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { GridView1.DataSource = GenerateTable(); GridView1.DataBind(); } } private DataTable GenerateTable() { DataTable dt = new DataTable(); dt.Columns.Add("ID", typeof(int)); dt.Columns.Add("Name", typeof(string)); DataRow row; Random rnd = new Random(); for (int i = 1; i != 10; ++i) { row = dt.NewRow(); row[0] = i; row[1] = "Product_" + i; dt.Rows.Add(row); } return dt; } protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { TableCellCollection cells = e.Row.Cells; foreach (TableCell cell in cells) { cell.Attributes.Add("onclick", "onCell_Click(this)"); } } } 

    2012年4月28日 1:13
    版主