0
我在更新DetailsView控件上的事件時遇到問題。將值從下拉列表傳遞到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>
的下拉列表是在DetailsView我得到這個錯誤找不到控制「DropDownList2」在ControlParameter「的parentID」。 – ONYX 2012-02-14 00:45:46
你必須手動從下拉列表中傳遞一個參數,詳情請查看更新事件。更新事件始終將默認parentID參數設置爲0.我已更新我的代碼以向您顯示我的意思 – ONYX 2012-02-14 00:56:54
我的錯誤我沒有在detailsview中添加事件。我需要關注焦點 – ONYX 2012-02-14 01:00:33