簡體   English   中英

單向數據綁定gridview-僅更新?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM