2012-07-27 81 views
0

我有一个DropDown列表,其中我使用代码隐藏从我的数据库中带来的值。我需要一个DropDown值链接到另一个页面

我已经读从源数据,调用后增加了一个新的价值“增加新的技能”。

现在,当用户点击这个项目,我需要一个小页面(或者更确切地说,一个新的页面),打开添加未在DropDownList中提到的技能。

if (!IsPostBack) 
{ 
    SqlConnection myConn = new SqlConnection(@"Data Source=USER-PC\SQLEXPRESS;Initial Catalog=KKSTech;Integrated Security=True"); 
    SqlCommand myCmd = new SqlCommand(
     "SELECT SkillName, SkillID FROM Skills", myConn); 
    myConn.Open(); 
    SqlDataReader myReader = myCmd.ExecuteReader(); 

    //Set up the data binding. 
    DropDownList1.DataSource = myReader; 
    DropDownList1.DataTextField = "SKillName"; 
    DropDownList1.DataValueField = "SkillID"; 
    DropDownList1.DataBind(); 

    //Close the connection. 
    myConn.Close(); 
    myReader.Close(); 

    //Add the item at the first position. 
    DropDownList1.Items.Insert(0, "..Add New Skill"); 
} 

这是我的代码隐藏文件..现在如何链接?

回答

0

AutoPostBack设置为true。这样当用户更改选项时,它会自动将页面发布到服务器。

处理此SelectedIndexChanged事件,并重定向到您的添加页面。

  • 把你的用户在添加页面。
  • 将详情添加到数据库。
  • 将用户带回本页面。
  • 列表将从数据库重新加载,直到您获得您的价值。

没有特殊链接是必需的。

+0

而且你怎么我绑定到该项目中添加链接? ? 其管理员正在添加一名员工的技能,所以当他看到列表中没有技能时,他选择此项目“添加新的”,然后他添加新的技能.. – Girish 2012-07-27 07:30:56

1

添加SelectedIndexChanged事件处理程序到dropdown这样

void ddl_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if(ddl.SelectedIndex == 0) 
     Response.Redirect("Add_New_Skill.aspx"); 
    } 

如果你想要的位置“...添加新技能”是在最后的名单

使用此

ddl.Items.Insert(ddl.Items.Count, "...Add New Skill"); 

现在要重定向到另一页您应该这样做

void ddl_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if(ddl.SelectedIndex == ddl.Items.Count-1) 
     Response.Redirect("Add_New_Skill.aspx"); 
} 
+0

你好..我试过这是一个好主意..但问题是价值“..添加新技能”的值为0,所以当我运行它时,它会自动重定向到不同的页面。我怎样才能防止这一点? – Girish 2012-07-27 07:28:04

+0

为什么不把'添加新技能'放到最后?这样,用户也会扫描该列表,以检查它是否在那里? – nunespascal 2012-07-27 07:29:28

+0

是的,这是我的问题..我怎么加它到底? – Girish 2012-07-27 07:30:37

1

您应该使用SelectedIndexChanged事件和SelectedValue属性:

void ddl_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if(String.Compare(ddl.SelectedValue,"..Add New Skill",true)==0) 
     Response.Redirect("Add_New_Skill.aspx"); 
    } 
+0

谢谢,但它不工作:( – Girish 2012-07-27 07:38:59

+0

尝试使用此代替: 'void ddl_SelectedIndexChanged(object sender,EventArgs e){var value = System.Web.UI.WebControls.DropDownList)sender).Text; if(String.C ompare(value,“.. Add New Skill”,true)== 0) Response.Redirect(“Add_New_Skill.aspx”); '' – Phist 2012-07-27 09:15:18

0

这是工作

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      bindDropdownlist() 
     } 
    } 
    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     string getvalue = DropDownList1.SelectedItem.Value; 
     if (getvalue == "..Add New Skill") 
     { 
      Response.Redirect("Default.apsx"); 
     } 
    } 

    public void bindDropdownlist() 
    { 
     SqlDataAdapter dap = new SqlDataAdapter("select coloumn1,colum2 from table", con); 
     DataSet ds = new DataSet(); 
     dap.Fill(ds); 
     DropDownList1.DataSource = ds.Tables[0]; 
     DropDownList1.DataTextField = "coloumn1"; 
     DropDownList1.DataValueField = "colum2 "; 
     DropDownList1.DataBind(); 
     DropDownList1.Items.Insert(0, "..Add New Skill"); 
    } 
} 

<div> 
    <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" 
      onselectedindexchanged="DropDownList1_SelectedIndexChanged"> 
    </asp:DropDownList> 
    </div> 
相关问题