[英]One-way databind gridview - Update only?
我正在用gridview做一些復雜的事情,而介於我和完成之間的唯一事情是我無法以編程方式設置數據綁定。 除了無法仍然更新數據源外,我已經在解決此問題的方法上做了很多。
我已將一個輸入字段替換為一個依賴的下拉列表,並使其保留在databind上的字段值。 我無法直接對其進行數據綁定,因為我得到了“不在項目列表中的選定值”之類的東西,所以我必須找到一種方法來獲取網格或數據源,以從依賴項下拉列表中獲取該值並將其應用於表。
有什么幫助嗎?
<asp:GridView ID="gvManager" runat="server"
AutoGenerateColumns="False" DataSourceID="ldsCampaigns"
ondatabound="gvManager_DataBound"
onrowediting="gvManager_RowEditing" DataKeyNames="ContentID">
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:BoundField DataField="ContentID" HeaderText="ContentID"
SortExpression="ContentID" />
<asp:BoundField DataField="CampaignName" HeaderText="CampaignName"
SortExpression="CampaignName" />
<asp:BoundField DataField="CampaignTitle" HeaderText="CampaignTitle"
SortExpression="CampaignTitle" />
<asp:BoundField DataField="CampaignTagLine" HeaderText="CampaignTagLine"
SortExpression="CampaignTagLine" />
<asp:TemplateField HeaderText="CampaignData" SortExpression="CampaignData">
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="ldsTables"
DataTextField="CMSTables" DataValueField="CMSTables"
SelectedValue='<%# Bind("CampaignData") %>' onload="DropDownList1_Load">
</asp:DropDownList>
<asp:LinqDataSource ID="ldsTables" runat="server"
ContextTypeName="DataContext"
onselecting="ldsTables_Selecting" Select="new (CMSTables)"
TableName="CampaignTables">
</asp:LinqDataSource>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("CampaignData") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="DataColumn"
SortExpression="DataColumn">
<EditItemTemplate>
<asp:DropDownList ID="DropDownList2" runat="server" style="margin-bottom: 0px"
SelectedValue='<%# Bind("DataColumn") %>' Visible="False">
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label2" runat="server"
Text='<%# Bind("DataColumn") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="CampaignLink" HeaderText="CampaignLink"
SortExpression="CampaignLink" />
<asp:BoundField DataField="Sunrise" HeaderText="Sunrise"
SortExpression="Sunrise" />
<asp:BoundField DataField="Sunset" HeaderText="Sunset"
SortExpression="Sunset" />
<asp:BoundField DataField="OwnerID" HeaderText="OwnerID"
SortExpression="OwnerID" />
<asp:CheckBoxField DataField="Enabled" HeaderText="Enabled"
SortExpression="Enabled" />
</Columns>
</asp:GridView>
如果我理解您的問題是對的,那么您有一個gridview,並且在gridview中有一個下拉列表,在更改該下拉列表時,您希望獲得其值並獲取一些數據或任何您想要的東西,如果是這種情況,那么您所擁有的是以下內容:
1-設置您的下拉列表屬性AutoPostBack =“ true”。
2-在dropdownlist的dropdownlist_indexchanged事件上,執行以下操作:
protected void dropdownlist1_indexchanged(sender object,eventargs e)
{
//Because the dropdownlist is inside the gridview you can't get data directly
//You will have to parse the sender object which will retrieve the dropdownlist
DropdownList ddl = (DropdownList)sender;
//You can then extract the data from the dropdownlist
}
對於任何未來的絕望程序員,我必須在update事件上更新linq數據源代碼:
protected void ldsCampaigns_Updated(object sender, LinqDataSourceStatusEventArgs e)
{
using (DashboardDataContext c = new DashboardDataContext())
{
Label Label3 = gvManager.Rows[gvManager.EditIndex].FindControl("Label4") as Label;
List<CMSCampaigns> change = c.CMSCampaigns.Where(s => s.ContentID == Convert.ToInt16(Label3.Text)).ToList();
DropDownList DropDownList2 = gvDashboardManager.Rows[gvDashboardManager.EditIndex].FindControl("DropDownList2") as DropDownList;
change[0].DataColumn = DropDownList2.SelectedValue.ToString();
c.SubmitChanges();
}
}
這是我曾經用kudgetstergramgram進行過的最集群的clusterkludge。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.