2012-02-14 2 views
0

내 DetailsView 컨트롤의 이벤트를 업데이트 할 때 문제가 있습니다. dropdownlist에서 UpdateParameters 컬렉션으로 값을 전달할 때 항상 필드 parentID를 0으로 설정합니다. 나는 그것이 경우에 컨트롤을 발견 한 것을 알고 있지만 나는 심지어 "1"의이 UpdateParameters 함께 할 수 있도록 내 예제에서 속성 임 잘못하고 무엇을 말해 줄 수에 기본 값을 설정할 수UpdateParameters가 항상 0으로 설정되었습니다.

제발 해결하는 방법
protected void DetailsView1_ItemUpdating(object sender, DetailsViewUpdateEventArgs e) 
{ 
    DropDownList forumGroup = DetailsView1.FindControl("DropDownList2") as DropDownList; 
    string value = forumGroup.SelectedValue.ToString(); 
    ObjectDataSource3.UpdateParameters["parentID"].DefaultValue = "1" // always is 0; 
} 


    public int UpdateForumByID(int forumID, string title, string url, string description, 
     string imageUrl, int parentID, int importance, bool moderated, bool active) 
    { 
     ObjectContext context = new ObjectContext("name=CMSEntities"); 
     ObjectSet<CMSModel.Forums> forums = context.CreateObjectSet<CMSModel.Forums>(); 
     // here forum is null 
     CMSModel.Forums forum = forums.FirstOrDefault(x => x.ForumID == forumID); 
     forum.Title = title; 
     forum.Url = url; 
     forum.Description = description; 
     forum.ImageUrl = imageUrl; 
     forum.ParentID = parentID; 
     forum.Importance = importance; 
     forum.Moderated = moderated; 
     forum.Active = active; 

     int affectedRows = context.SaveChanges(); 

     return affectedRows; 
    } 

태그 :`

 <asp:ObjectDataSource ID="ObjectDataSource3" runat="server" 
      SelectMethod="GetForumByID" TypeName="CMS.Framework.Forums" 
      UpdateMethod="UpdateForumByID"> 
      <SelectParameters> 
       <asp:ControlParameter ControlID="GridView1" Name="forumID" 
        PropertyName="SelectedValue" Type="Int32" /> 
      </SelectParameters> 
      <UpdateParameters> 
       <asp:Parameter Name="forumID" Type="Int32" /> 
       <asp:Parameter Name="title" Type="String" /> 
       <asp:Parameter Name="url" Type="String" /> 
       <asp:Parameter Name="description" Type="String" /> 
       <asp:Parameter Name="imageUrl" Type="String" /> 
       <asp:Parameter Name="parentID" Type="Int32" /> 
       <asp:Parameter Name="parentID" Type="Int32" /> 
       <asp:Parameter Name="importance" Type="Int32" /> 
       <asp:Parameter Name="active" Type="Boolean" /> 
      </UpdateParameters> 
     </asp:ObjectDataSource> 


     <asp:DetailsView ID="DetailsView1" runat="server" 
      AutoGenerateRows="False" 
      DataKeyNames="ForumID" 
      DataSourceID="ObjectDataSource3" 
      DefaultMode="Insert" 
      OnDataBound="DetailsView1_DataBound" 
      OnItemCommand="DetailsView1_ItemCommand" 
      OnItemUpdated="DetailsView1_ItemUpdated"> 
      <Fields> 
       <asp:BoundField DataField="ForumID" HeaderText="ForumID" 
        SortExpression="ForumID" ReadOnly="true" InsertVisible="false" /> 
       <asp:BoundField DataField="AddedBy" HeaderText="AddedBy" 
        SortExpression="AddedBy" ReadOnly="true" InsertVisible="false" /> 
       <asp:BoundField DataField="AddedDate" HeaderText="AddedDate" 
        SortExpression="AddedDate" ReadOnly="true" InsertVisible="false" /> 
       <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" /> 
       <asp:BoundField DataField="Url" HeaderText="Url" SortExpression="Url" /> 
       <asp:BoundField DataField="Description" HeaderText="Description" 
        SortExpression="Description" /> 
       <asp:BoundField DataField="ImageUrl" HeaderText="ImageUrl" 
        SortExpression="ImageUrl" /> 
       <asp:TemplateField HeaderText="Forum Group:" InsertVisible="true" SortExpression="ForumGroup"> 
        <InsertItemTemplate> 
         <asp:DropDownList ID="DropDownList2" runat="server" 
          DataSourceID="ObjectDataSource4" DataTextField="Key" DataValueField="Value"> 
         </asp:DropDownList> 
         <asp:ObjectDataSource ID="ObjectDataSource4" runat="server" 
          SelectMethod="GetDisplayForumGroups" TypeName="CMS.Framework.Forums"> 
         </asp:ObjectDataSource> 
        </InsertItemTemplate> 
        <EditItemTemplate> 
         <asp:DropDownList ID="DropDownList2" runat="server" 
          DataSourceID="ObjectDataSource5" DataTextField="Key" DataValueField="Value"> 
         </asp:DropDownList> 
         <asp:ObjectDataSource ID="ObjectDataSource5" runat="server" 
          SelectMethod="GetDisplayForumGroups" TypeName="CMS.Framework.Forums"> 
         </asp:ObjectDataSource> 
        </EditItemTemplate> 
       </asp:TemplateField> 
       <asp:BoundField DataField="Importance" HeaderText="Importance" 
        SortExpression="Importance" /> 
       <asp:CheckBoxField DataField="Moderated" HeaderText="Moderated" 
        SortExpression="Moderated" /> 
       <asp:CheckBoxField DataField="Active" HeaderText="Active" 
        SortExpression="Active" /> 
       <asp:BoundField DataField="UpdatedBy" HeaderText="UpdatedBy" 
        SortExpression="UpdatedBy" ReadOnly="true" InsertVisible="false" /> 
       <asp:BoundField DataField="UpdatedDate" HeaderText="UpdatedDate" 
        SortExpression="UpdatedDate" ReadOnly="true" InsertVisible="true" /> 
       <asp:TemplateField> 
        <InsertItemTemplate> 
         <asp:LinkButton ID="lnkInsert" runat="server" CommandName="Insert" Text="Insert"></asp:LinkButton> 
         <asp:LinkButton ID="lnkCancel" runat="server" CommandName="Cancel" Text="Cancel"></asp:LinkButton> 
        </InsertItemTemplate> 
        <EditItemTemplate> 
         <asp:LinkButton ID="lnkUpdate" runat="server" CommandName="Update" Text="Update"></asp:LinkButton> 
         <asp:LinkButton ID="lnkCancel" runat="server" CommandName="Cancel" Text="Cancel"></asp:LinkButton> 
        </EditItemTemplate> 
       </asp:TemplateField> 
      </Fields> 
     </asp:DetailsView> 

답변

0

당신은 당신이 필요로하는 선택된 값에 직접 매개 변수를 바인딩 할 수 있습니까? 드롭 다운리스트가 난이 오류가 ControlParameter 'parentID'에서 'DropDownList2'컨트롤을 찾을 수 없습니다 얻을 위해 DetailsView에

<asp:controlparameter name="anID" controlid="DropDownList1" propertyname="SelectedValue" /> 
+0

: The docs 같은 것을 제안한다. – ONYX

+0

업데이트보기의 드롭 다운 목록에서 수동으로 매개 변수를 전달해야합니다. 업데이트 중입니까? 업데이트 이벤트는 항상 Default parentID 매개 변수를 0으로 설정합니다. 내 코드가 의미하는 바를 보여주기 위해 업데이트했습니다. – ONYX

+0

내 실수로 detailsview에 이벤트를 추가하지 않았습니다. 관심 집중 필요 – ONYX

관련 문제