簡體   English   中英

C#-更新時無法從asp.net gridview檢索值

[英]c# - can't retrieve value from asp.net gridview when updating

我有一個帶有一些下拉列表的gridview用於更新。 我想在用戶更新時獲取新值。 我已使用此處描述的方法http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.gridview.rowupdating%28v=vs.110%29.aspx但是,我出現此錯誤:無法將類型為“ System.Web.UI.LiteralControl”的對象轉換為類型為“ System.Web.UI.WebControls.DropDownList”。 對於這行代碼字符串status =((DropDownList)(gvr.Cells [8] .Controls [0]))。Text; 我嘗試過更改索引[8],但是沒有運氣。 這怎么了 在此先感謝您的時間和精力。

   <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" BackColor="White" BorderColor="#3366CC" BorderStyle="Solid" BorderWidth="2px" CellPadding="4" DataKeyNames="id" DataSourceID="SqlDataSource1" OnRowUpdating="GridView1_RowUpdating">
    <Columns>
        <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
        <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True" SortExpression="id" Visible="False" />
        <asp:BoundField DataField="userName" HeaderText="User Name" ReadOnly="True" SortExpression="userName" />
        <asp:BoundField DataField="employeeName" HeaderText="Employee Name" ReadOnly="True" SortExpression="employeeName" />
        <asp:BoundField DataField="division" HeaderText="Division" ReadOnly="True" SortExpression="division" />
        <asp:TemplateField HeaderText="Start Date" SortExpression="startDate">
            <EditItemTemplate>
                <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("startDate", "{0:D}") %>'></asp:TextBox>
                <ajaxToolkit:CalendarExtender ID="TextBox1_CalendarExtender" runat="server" Enabled="True" TargetControlID="TextBox1" Format="D">
                </ajaxToolkit:CalendarExtender>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="Label3" runat="server" Text='<%# Bind("startDate", "{0:D}") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="End Date" SortExpression="endDate">
            <EditItemTemplate>
                <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("endDate", "{0:D}") %>'></asp:TextBox>
                <ajaxToolkit:CalendarExtender ID="TextBox2_CalendarExtender" runat="server" ClearTime="True" Enabled="True" Format="D" TargetControlID="TextBox2">
                </ajaxToolkit:CalendarExtender>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="Label4" runat="server" Text='<%# Bind("endDate", "{0:D}") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Type" SortExpression="type">
            <EditItemTemplate>
                <asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Bind("type") %>'>
                    <asp:ListItem>Personal</asp:ListItem>
                    <asp:ListItem>Vacation</asp:ListItem>
                </asp:DropDownList>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="Label1" runat="server" Text='<%# Bind("type") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Status" SortExpression="status">
            <EditItemTemplate>
                <asp:DropDownList ID="DropDownList2" runat="server" SelectedValue='<%# Bind("status") %>'>
                    <asp:ListItem>Pending</asp:ListItem>
                    <asp:ListItem>Appoved</asp:ListItem>
                    <asp:ListItem>Declined</asp:ListItem>
                </asp:DropDownList>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="Label2" runat="server" Text='<%# Bind("status") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
    <FooterStyle BackColor="#99CCCC" ForeColor="#003399" />
    <HeaderStyle BackColor="#003399" Font-Bold="True" ForeColor="#CCCCFF" />
    <PagerStyle BackColor="#99CCCC" ForeColor="#003399" HorizontalAlign="Left" />
    <RowStyle BackColor="White" ForeColor="#003399" />
    <SelectedRowStyle BackColor="#009999" Font-Bold="True" ForeColor="#CCFF99" />
    <SortedAscendingCellStyle BackColor="#EDF6F6" />
    <SortedAscendingHeaderStyle BackColor="#0D4AC4" />
    <SortedDescendingCellStyle BackColor="#D6DFDF" />
    <SortedDescendingHeaderStyle BackColor="#002876" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:WebPortal_Call4HealthReports_ConnectionString %>" DeleteCommand="usp_HR_TimeOffRequestsDelete" DeleteCommandType="StoredProcedure" InsertCommand="usp_HR_TimeOffRequestsInsert" InsertCommandType="StoredProcedure" SelectCommand="usp_HR_TimeOffRequestsSelectAll" SelectCommandType="StoredProcedure" UpdateCommand="usp_HR_TimeOffRequestsUpdate2" UpdateCommandType="StoredProcedure">
    <DeleteParameters>
        <asp:Parameter Name="id" Type="Int32" />
    </DeleteParameters>
    <InsertParameters>
        <asp:Parameter Name="userName" Type="String" />
        <asp:Parameter Name="employeeName" Type="String" />
        <asp:Parameter Name="division" Type="String" />
        <asp:Parameter DbType="Date" Name="startDate" />
        <asp:Parameter DbType="Date" Name="endDate" />
        <asp:Parameter Name="type" Type="String" />
        <asp:Parameter Name="status" Type="String" />
    </InsertParameters>
    <UpdateParameters>
        <asp:Parameter Name="id" Type="Int32" />
        <asp:Parameter DbType="Date" Name="startDate" />
        <asp:Parameter DbType="Date" Name="endDate" />
        <asp:Parameter Name="type" Type="String" />
        <asp:Parameter Name="status" Type="String" />
    </UpdateParameters>
</asp:SqlDataSource>
<ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</ajaxToolkit:ToolkitScriptManager>

代碼隱藏:

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    GridViewRow gvr = (GridViewRow)GridView1.Rows[e.RowIndex];

    string status = ((DropDownList)(gvr.Cells[8].Controls[0])).Text;
}

使用FindControl查找要查找的控件,而不是對索引進行硬編碼。

 DropDownList ddl = (DropDownList)gvr.FindControl("DropDownList1");
 string status = ddl.Text;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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