none
有关formview中EditItemTemplate模板下,dropdownlist取值的问题,请教大家! RRS feed

  • 问题

  • <asp:FormView  ID="SQ_passcardcontent"    OnItemCreated="Clk_OnItemCreated" DataKeyNames="ItemCode" DataSourceID="datasource_SQ_passcardcontent" runat="server">
        <ItemTemplate >
     <asp:TableRow>
            <asp:TableCell>
            <asp:Label ID="Label17" runat="server"  Font-Size="Larger" Text="紧急程度"></asp:Label>
            </asp:TableCell>
            <asp:TableCell HorizontalAlign="Left">
            <asp:DropDownList ID="uFlag" runat="server" >
            <asp:ListItem Text="普通" Value="普通"></asp:ListItem>
            <asp:ListItem Text="紧急" Value="紧急"></asp:ListItem>
            <asp:ListItem Text="特急" Value="特急"></asp:ListItem>        
            </asp:DropDownList>
            </asp:TableCell>
            </asp:TableRow>

     <EditItemTemplate>
     <asp:TableRow>
            <asp:TableCell>
            <asp:Label ID="Label17" runat="server"  Font-Size="Larger" Text="紧急程度"></asp:Label>
            </asp:TableCell>
            <asp:TableCell HorizontalAlign="Left">
            <asp:DropDownList ID="uFlag" runat="server" >
            <asp:ListItem Text="普通" Value="普通"></asp:ListItem>
            <asp:ListItem Text="紧急" Value="紧急"></asp:ListItem>
            <asp:ListItem Text="特急" Value="特急"></asp:ListItem>        
            </asp:DropDownList>
            </asp:TableCell>
            </asp:TableRow>


    .cs文件
    page_load里面

     string flag;
            flag = ds.Tables["selecttable"].Rows[0]["uFlag"].ToString().Trim();
            DropDownList _uFlag = (DropDownList)SQ_passcardcontent.FindControl("uFlag");
            if (flag + "a" != "a")
            {
                _uFlag.Items.FindByText(flag).Selected = true;
            }
    上面初始化的时候把ItemTemplate 中的dropdownlist中的值给选中

    下面是把EditItemTemplate中的的dropdownlist中的值给选中
     protected void Clk_OnItemCreated(object obj, EventArgs e)
        {
            string flag;
            flag = Convert.ToString(Session["uFlag"]);
            DropDownList _uFlag = (DropDownList)SQ_passcardcontent.Row.FindControl("uFlag");
            if (flag + "a" != "a")
            {
                _uFlag.Items.FindByText(flag).Selected = true;
            }               
        }


     <asp:Button ID="UpadateStaff" runat="server" OnClick="updatePhaseContent"  CommandName="Update"   Text="更新" />

     protected void updatePhaseContent(object obj, EventArgs e)
        {
            string flag;
            DropDownList uFlag = (DropDownList)SQ_passcardcontent.FindControl("uFlag");
            flag = uFlag.SelectedValue.ToString();//我点击更新,为什么取不到我选中的值,返回的总是选中前的值呢?????请大家给点提示!谢谢

    }

    2009年10月21日 6:39

答案

  • 把page_load里面这段代码修改下
      if (!this.IsPostBack)
                {
     string flag;
            flag = ds.Tables["selecttable"].Rows[0]["uFlag"].ToString().Trim();
            DropDownList _uFlag = (DropDownList)SQ_passcardcontent.FindControl("uFlag");
            if (flag + "a" != "a")
            {
                _uFlag.Items.FindByText(flag).Selected = true;
            }
    2009年10月21日 9:28

全部回复

  • 求解!求解!
    2009年10月21日 7:10
  •    protected void FormView1_ItemCommand(object sender, FormViewCommandEventArgs e)
            {
                if (e.CommandName == "Update")
                {
                   
                        DropDownList d = FormView1.FindControl("D1") as DropDownList;
                      Response.Write(d.SelectedValue);
                  
                }
            }
    2009年10月21日 7:37
  • 楼上哥们,你的方法,我试过了,好像不好用!
    2009年10月21日 9:14
  •  OnItemCommand="updatePhaseContent"
    我在formview里面加上上面一句,把更新里面的onclick删除掉,把后台的函数的参数更改一下,就是你的做法吧 protected void updatePhaseContent(object sender, FormViewCommandEventArgs e)
    我跟踪了一下,还是娶不到值!
    2009年10月21日 9:16
  • 楼上哥们,你的方法,我试过了,好像不好用!

    能用就行!       也可以用protected void Button1_Command(object sender, CommandEventArgs e)
            {
        if (e.CommandName == "Update")
                {
                     DropDownList d = FormView1.FindControl("D1") as DropDownList;
                      Response.Write(d.SelectedValue);
                   
                  
                }
            }

    2009年10月21日 9:24
  • 把page_load里面这段代码修改下
      if (!this.IsPostBack)
                {
     string flag;
            flag = ds.Tables["selecttable"].Rows[0]["uFlag"].ToString().Trim();
            DropDownList _uFlag = (DropDownList)SQ_passcardcontent.FindControl("uFlag");
            if (flag + "a" != "a")
            {
                _uFlag.Items.FindByText(flag).Selected = true;
            }
    2009年10月21日 9:28
  • 谢谢!我自己都感觉我的这个错误有点愚!
    2009年10月21日 9:48