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>
: The docs 같은 것을 제안한다. – ONYX
업데이트보기의 드롭 다운 목록에서 수동으로 매개 변수를 전달해야합니다. 업데이트 중입니까? 업데이트 이벤트는 항상 Default parentID 매개 변수를 0으로 설정합니다. 내 코드가 의미하는 바를 보여주기 위해 업데이트했습니다. – ONYX
내 실수로 detailsview에 이벤트를 추가하지 않았습니다. 관심 집중 필요 – ONYX