detailviews里面的编辑摸板含有dropdownlist````
在detailviews自带的编辑```更新方法时```无法获取dropdownlist的DataValueField来进行更新``代码`如下``希望大家帮忙```急啊``明天就要交作业了``<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataSourceID="ObjectDataSource2"
            Height="50px" Width="125px" Visible="False" AutoGenerateEditButton="True" OnItemUpdated="DetailsView1_ItemUpdated">
            <Fields>
                <asp:BoundField DataField="Count" HeaderText="Count" SortExpression="Count" />
                <asp:BoundField DataField="CreatorID" HeaderText="CreatorID" SortExpression="CreatorID" />
                <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
                <asp:TemplateField HeaderText="CateName" SortExpression="CateID">
                    <EditItemTemplate>
                        <asp:DropDownList runat="server" ID="DropDownList1" DataTextField="CateName" DataValueField="CateID"
                         DataSourceID="ObjectDataSource3" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"></asp:DropDownList>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# GetCateNameByID(Convert.ToInt32(Eval("CateID"))) %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="From" HeaderText="From" SortExpression="From" />
                <asp:BoundField DataField="Date" HeaderText="Date" SortExpression="Date" />
                <asp:CheckBoxField DataField="IsTop" HeaderText="IsTop" SortExpression="IsTop" />
                <asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" />
                <asp:BoundField DataField="Content" HeaderText="Content" SortExpression="Content" />
                <asp:CheckBoxField DataField="Visible" HeaderText="Visible" SortExpression="Visible" />
            </Fields>
        </asp:DetailsView>
        <asp:ObjectDataSource ID="ObjectDataSource2" runat="server" SelectMethod="GetNewsByID"
            TypeName="BLL.E_News" DataObjectTypeName="Model.E_NewsInfo" UpdateMethod="UpdateNews">
            <SelectParameters>
                <asp:ControlParameter ControlID="GridView1" Name="ID" PropertyName="SelectedValue"
                    Type="Int32" />
            </SelectParameters>
        </asp:ObjectDataSource>

解决方案 »

  1.   

    用数据源控件不清楚
    手写代码比较方便
    可以现FindControl(“DropDownList Name”)然后取值
      

  2.   

    `GridView的 RowUpdating事件中for(int i=0;i<GridView1.Rows.Count;i++)
    {
     DropDownList d=(DropDownList)GridView1.Rows[i].FindControl("DropdownlistName");
     string Text=d.selectedItem.ToString();
     string value=d.selectedVale;
     相应的更新语句
    }
      

  3.   

    <asp:DropDownList runat="server" ID="DropDownList1" DataTextField="CateName" DataValueField="CateID"
                             DataSourceID="ObjectDataSource3" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"></asp:DropDownList>加一个:
    SelectedValue='<%# Bind("CateID") %>'
    可以试一下
      

  4.   

    请在 xxxDataSource.Updating 事件中处理,
    对于 ObjectDataSource, 大概如下: protected void ObjectDataSource1_Updating(object sender, ObjectDataSourceMethodEventArgs e)
        {
            e.InputParameters["MyParamerter1"] = ((DropDownList)DetailsView1.FindControl("MyDropDownListID")).SelectedValue;
        }
    Hope help!
      

  5.   

    谢谢大家的指点``我现在一个一的试```谢谢大家```
    好象 Jinglecat(晓风残月 >> 问题需简洁,错误要详细 
    的方法没错呢``
      

  6.   

    Jinglecat(晓风残月 >> 问题需简洁,错误要详细) 
    你说的方法不行哈```提示错误```
    错误::  OrderedDictionary 是只读的,无法修改。 
    cxz08050924() 
    我用的是detailview来做的``不是gridview``而且我使用的是存储过程```方法的调用是用的
    objectdatasource```所以``用你说的方法行不通````
    roycelwh(ghost)
    加一个:
    SelectedValue='<%# Bind("CateID") %>'
    可以试一下加了之后运行出错``提示 
    DropDownList1”有一个无效 SelectedValue,因为它不在项目列表中。
    参数名: value
      

  7.   

    出现奇怪问题了`````   protected void ObjectDataSource2_Updating(object sender, ObjectDataSourceMethodEventArgs e)
        {
            E_NewsInfo Anews = (E_NewsInfo)e.InputParameters[0];
            Anews.CateID =Convert.ToInt32(((DropDownList)DetailsView1.FindControl("DropDownList1")).SelectedItem.Value);
    }我使用了这个方法````写了这2句话```居然问题解决了``
    我无法解释这个问题``希望各位朋友能帮忙解释下`````我并没有修改InputParameters的值啊??
      

  8.   

    看看用roycelwh(ghost)的方式做一下!
    其中selectedValue好像要在“设计”视图里绑定。单独添加代码好像会提示一些错误。