2013-05-17 67 views
2

我想插入下拉列表中選擇的項目到數據庫,但我的下拉列表保持返回第一個選項。汽車回帖是錯誤的。 這裏代碼:c#回發dropdownlist總是選擇第一個值

dropTask()=下拉列表,我從數據庫中填充它。

 protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
     { 
      dropTask(); 
     } 


    } 

    protected void AjaxFileUpload1_UploadComplete(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e) 
    { 


     String pathdirectory = (dropListActivity.SelectedItem.Text+"/"); 
     String filepathImage = (pathdirectory + e.FileName); 

     EnsureDirectoriesExist(pathdirectory); 

     AjaxFileUpload1.SaveAs(Server.MapPath(filepathImage)); 


     Session["filepathImage"] = filepathImage; 

    } 

我檢查了從價值迴歸使用標籤下拉列表:

protected void btnDone_Click(object sender, EventArgs e) 
    { 
     if (Session["filepathImage"] != null) 
     { 
      string filepathImage = Session["filepathImage"] as string; 


      Label1.Text = filepathImage; 

     } 

    } 

標籤文本顯示在下拉列表中值,而不是我選擇的選擇第一個選項。請在這方面給我啓發。

ASPX:

<tr> 
    <td> 
     <h2>Upload your Story!</h2> 
     <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"> 
     </asp:ToolkitScriptManager> 

    </td> 
</tr> 

<tr> 
<td colspan = "2"></td> 
</tr> 

<tr> 
    <td> 
     <b>Select Activity:</b> 
    </td> 
    <td> 

     <asp:DropDownList ID="dropListActivity" runat="server" 
      onselectedindexchanged="dropListActivity_SelectedIndexChanged"> 
     </asp:DropDownList> 


    </td> 

</tr> 

<tr> 
<td colspan = "2"></td> 
</tr> 

<tr> 
    <td> 
     <b>Story Title:</b> 
    </td> 
    <td> 
     <asp:TextBox ID="txtStoryTitle" runat="server" 
      ontextchanged="txtTitle_TextChanged" AutoPostBack="True"></asp:TextBox> 
    </td> 
</tr> 

<tr> 
    <td class="style1"> 
      <b>Upload your files here:</b><br /> 
      Multiple Images and 1 Audio file only. 
    </td> 
    <td class="style1"> 
     <asp:AjaxFileUpload ID="AjaxFileUpload1" runat="server" 
      onuploadcomplete="AjaxFileUpload1_UploadComplete" 
      /> 
    </td> 
</tr> 

<tr> 
<td colspan = "2"></td> 
</tr> 

<tr> 
    <td> 
     <asp:Label ID="Label1" runat="server" ></asp:Label> 
    </td> 

    <td> 
     <asp:Button ID="btnDone" runat="server" Text="Done" onclick="btnDone_Click" /> 
    </td> 
</tr> 
+0

是ajax面板中的下拉列表控件? – Nate

+0

不知道你是什麼意思...如果你的意思是我從ajax選項卡下拉列表,然後不...對不起,我是一個新手。 – user2376998

+0

:你是否使用ajax控件上傳?如果你這樣做了,下拉列表控件和文件上傳控件必須在同一個ajax更新面板中。 – Nate

回答

0

我想你需要的東西,如:

private void SaveSelected() 
{ 
    ViewState["SelectedItem"] = dropListActivity.SelectedItem; 
} 

您在dropListActivity_SelectedIndexChanged使用和

private void LoadSelected() 
{ 
    if (ViewState["SelectedItem"] != null) 
     dropListActivity.SelectedItem = (ListItem)ViewState["SelectedItem"]; 
} 

你打電話後dropTask();

請參閱this post's answer

+0

您好,感謝幫助的人欣賞它,但ListIem存在錯誤 - >無法隱式轉換類型'系統.Web.UI.WebControls.ListItem'to'string' – user2376998

+0

這不是確切的代碼,我希望你能明白。例如,您可以使用SelectedItem.ToString(),或者存儲SelectedItemIndex(如果您願意)。 –

+0

對不起,我是一個緩慢的學習者,邏輯/想法無法正確流入我...請賜教我更多:) – user2376998

0

在dropListActivity_SelectedIndexChanged事件不喜歡

if(dropListActivity.Items.Count > 0) 
{ 
    ViewState["DropDownSelectedValue"] = dropListActivity.Item.SelectedValue; 
} 

並在下拉列表中事件的負載或數據綁定寫

if(ViewState["DropDownSelectedValue"] != null && dropListActivity.Items.Count > 0) 
{ 
    dropListActivity.SelectedValue = ViewState["DropDownSelectedValue"].ToString(); 
} 
+0

這不知何故刪除所有我的數據在下拉列表中我已經從db – user2376998

+0

填充它是回發中的下拉式綁定或否。它不應該從下拉列表中刪除元素。 –

+0

我發佈了代碼,它在(!Page.IsPostBack)中,即使我把它放在回發和頁面加載之外,問題仍然存在 – user2376998

2

DropListActivity.SelectedItem.ToString應該做的伎倆。還有一些其他的事情你應該記住:

  1. 請確保你沒有在回傳中填充下拉列表。

  2. 選擇的值如果 包含下拉列表控件的頁的部分,如果 您使用的是更新面板的下拉列表應該是面板中,或者如果你現在 張貼back.ie將只可在服務器正在發回整個頁面,那麼根本不會有任何問題,只要您符合第一個標準即可。

  3. 您的事件處理程序dropListActivity_SelectedIndexChanged將 總是會在頁面被回發並且所選擇的索引 已更改時被觸發。在執行page_load subroutine之後將調用事件處理程序dropListActivity_SelectedIndexChanged
相關問題