c#postback dropdownlist总是选择第一个值

时间:2013-05-17 02:29:40

标签: c#

我想将下拉列表中选定的项目插入数据库,但我的下拉列表保持返回第一个选项。自动回帖是假的。 代码在这里:

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>

3 个答案:

答案 0 :(得分:2)

DropListActivity.SelectedItem.ToString应该做到这一点。还有一些其他事项你应该记住:

  1. 确保您没有在回发中填充下拉列表。

  2. 只有部分时,才能在服务器上使用所选值 包含下拉列表控件的页面将被回发。如果 您正在使用更新面板,您的下拉列表应该存在 在该面板内,或者如果您要回复整个页面,那么只要您符合第一个标准,就不会有任何问题。

  3. 您的事件处理程序dropListActivity_SelectedIndexChanged会 在回发页面和被占用的索引时总是被触发 已经改变。执行dropListActivity_SelectedIndexChanged后将调用事件处理程序page_load subroutine

答案 1 :(得分: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

答案 2 :(得分: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();
}