2013-07-24 3 views
0

Я новичок в asp.net и C#. Я пытаюсь установить текст в раскрывающемся списке, чтобы отобразить текущий заголовок страницы, но я не могу заставить его работать. Может ли кто-нибудь посоветовать, как это сделать на основе приведенного ниже кода? Благодаря!Установить значение DropDownList по выбранному элементу

if (!Page.IsPostBack) 
    { 
     string path = @"C:\Websites\TaxMapCS"; 
     DirectoryInfo di = new DirectoryInfo(path); 
     FileSystemInfo[] fi = di.GetFiles("*.aspx"); 
     var result = string.Join(",", fi.OrderByDescending(f => f.CreationTime).Select(i => i.ToString()).ToArray()); 

     DropDownList1.DataSource = result.Replace(".aspx", "").Split(','); 

     DropDownList1.DataBind(); 

     DropDownList1.Items.Insert(0, new ListItem("Select Edition", "")); 

    } 
} 

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    Response.Redirect(DropDownList1.SelectedItem.Value + ".aspx"); 
} 
+1

только побочное замечание. Я бы использовал string.Empty вместо использования "". Если вы используете «», а кто-то другой входит в код, они не знают, было ли это намеренно или кто-то забыл поместить значение. string.Empty говорит, что я хотел передать пустую строку. –

+0

Какая часть не работает? –

+0

Спасибо Cubicle.Jockey, это хороший момент. – eric

ответ

0

Я не уверен, ASP.NET, но в обычном C#, я думаю, вы можете попробовать что-то вроде этого:

DropDownList1.Items.Add(this.Page.Title); 

Благодаря Cubicle.Jockey за помощь мне с кодом.

+0

Я думаю, что это это.Page.Title в отношении названия. Но я еще не сделал ASP.NET стиль aspx. MVC - это все. ;) –

2

Попробуйте

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    Response.Redirect(DropDownList1.SelectedItem.Text + ".aspx"); 
} 

Или

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    Response.Redirect(DropDownList1.SelectedValue + ".aspx"); 
} 
+0

нет определения для Selected.Text – eric

+0

не работает, спасибо, хотя – eric

+0

*** Кто его поддержал? *** В ASP.Net DropDownList нет такой вещи, как 'SelectedText'. – Win

0

Вам не нужно разделить и соединить строки. Вместо этого вы можете добавить отдельный ListItem в DropDownList.

<asp:DropDownList runat="server" ID="DropDownList1" AutoPostBack="True" 
    OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" /> 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     string path = @"C:\DevelopmentArchive\TelerikDemo\TelerikDemo"; 
     DirectoryInfo di = new DirectoryInfo(path); 
     FileInfo[] files = di.GetFiles("*.aspx"); 

     foreach (var file in files.OrderByDescending(f => f.CreationTime)) 
      DropDownList1.Items.Add(new ListItem(file.Name.Replace(".aspx", ""), file.Name)); 

     DropDownList1.Items.Insert(0, new ListItem("Select Edition", "")); 
    } 
} 

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    Response.Redirect(DropDownList1.SelectedItem.Value); 
} 
+0

Спасибо, но это не касается моей проблемы. – eric

+0

@eric Вам необходимо назначить ** текст и значение ** на «ListItem», чтобы получить «SelectedItem.Value». Посмотрите на ** цикл foreach ** в моем ответе. – Win

0

Попробуйте это:

if (!Page.IsPostBack) 
    { 
     string path = @"C:\Websites\TaxMapCS"; 
     DirectoryInfo di = new DirectoryInfo(path); 
     FileSystemInfo[] fi = di.GetFiles("*.aspx"); 
     var result = string.Join(",", fi.OrderByDescending(f => f.CreationTime).Select(i => i.ToString()).ToArray()); 

     DropDownList1.DataSource = result.Replace(".aspx", "").Split(','); 

     DropDownList1.DataBind(); 

     DropDownList1.Items.Insert(0, new ListItem("Select Edition", "")); 
     DropDownList1.Items.Insert(0, new ListItem(Page.Title, "")); 

    } 
} 


    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if(DropDownList1.SelectedIndex > 0)//do not redirect if 'Selected Edition' is selected 
     { 
      Response.Redirect(DropDownList1.SelectedItem.Text + ".aspx"); 
     } 
    } 
+0

Хорошо, похоже, мой вопрос непонятен. Все остальное работает _except_ текущая страница отображается как выбрана в раскрывающемся списке. SelectedValue работает. Ваше предложение не устанавливает раскрывающееся меню для отображения текущего элемента. Спасибо хоть. – eric

+0

Я отредактировал мой ответ – afzalulh

+0

Afzalulh! Это работает, спасибо! – eric

Смежные вопросы