Установить значение в выпадающем списке при редактировании

#c# #asp.net #gridview

#c# #asp.net #просмотр сетки

Вопрос:

У меня есть выпадающий список внутри сетки. Я не хочу, чтобы значение в DDL было таким же в режиме редактирования, как в режиме просмотра, когда gridview переходит в режим редактирования, значение DDL, установленное для первого значения, по умолчанию.

Я пытался получить значение перед заполнением и привязкой gridview для режима редактирования, но затем я получаю null (nFolderId). И когда я пробую фрагмент nFolderId после привязки, я получаю значение по умолчанию (имеется в виду первое значение).

Итак, как я могу заставить значение DDL оставаться из режима просмотра в режим редактирования?

 protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
    GridView1.EditIndex = e.NewEditIndex;
    GridViewRow row = GridView1.Rows[e.NewEditIndex];
    var nFolderId = Convert.ToInt32(((DropDownList)row.FindControl("DropDownListFolders1")).SelectedValue);
    FillGridView();
    GridView1.DataBind();
}
  

мой aspx:

 <asp:GridView ID="GridView1" runat="server" OnRowEditing="GridView1_RowEditing" DataKeyNames="strPositionId,tmVaRPosition,nFoldersId"
            AllowSorting="True" AutoGenerateColumns="False" SkinID="gridviewGridlinesSkin" OnRowCancelingEdit="GridView1_CancelingEdit"
            OnRowUpdated="GridView1_RowUpdated" OnRowUpdating="GridView1_RowUpdating" OnRowDeleted="GridView1_RowDeleted" OnRowDeleting="GridView1_RowDeleting"
            EmptyDataText="No positions found" OnRowDataBound="GridView1_RowDatabound">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:ImageButton ID="ibEdit" runat="server" AlternateText="Edit" CommandName="Edit"
                            ImageUrl="~/Images/icon_edit.gif" />
                        <asp:ImageButton ID="ibDelete" runat="server" AlternateText="Delete" CommandName="Delete"
                            ImageUrl="~/Images/icon_delete.gif" OnClientClick='<%# Eval("strPositionName", "return confirm("Are you sure you want to delete this entry {0}?");") %>' />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:ImageButton ID="ibUpdate" runat="server" AlternateText="Update" CommandName="Update" ImageUrl="~/Images/icon_ok.gif" />
                        <asp:ImageButton ID="ibCancel" runat="server" AlternateText="Cancel" CommandName="Cancel" ImageUrl="~/Images/icon_cancel.gif" />
                    </EditItemTemplate>
                    <ItemTemplate>
                         <asp:Label ID="Label3" runat="server" Text='<%# Eval("strFolderName") %>'></asp:Label>
                    </ItemTemplate>
                    <ItemStyle Wrap="False" />
                </asp:TemplateField>
                <asp:TemplateField>
                    <EditItemTemplate>
                        <BrummerComp:SortableDropDownList ID="DropDownListFolders1" Width="141px" runat="server"
                                SkinID="BCdropdownlistSkin"/>
                    </EditItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
  

Комментарии:

1. В. Таким образом, выпадающий список выглядит одинаково в обоих режимах — режиме просмотра и режиме редактирования?

2. @deostroll В режиме просмотра это просто метка *, показывающая значение

Ответ №1:

Установите значение SelectedValue

 <div>
       <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"     DataSourceID="SqlDataSource1"
    onrowdeleting="GridView1_RowDeleting">
    <Columns>
        <asp:BoundField DataField="dd" HeaderText="dd" SortExpression="dd" />
        <asp:TemplateField HeaderText="ddd" SortExpression="ddd">
            <ItemTemplate>
                <asp:Label ID="Label1" runat="server" Text='<%# Bind("ddd") %>'></asp:Label>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("ddd") %>'></asp:TextBox>
            </EditItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="cate" SortExpression="cate">
            <EditItemTemplate>
                <asp:DropDownList ID="DropDownList1" runat="server"
                    DataSourceID="SqlDataSource12" DataTextField="cate" DataValueField="id"
                    SelectedValue="<%# Bind('cate') %>">
                </asp:DropDownList>
                <asp:SqlDataSource ID="SqlDataSource12" runat="server"
                    ConnectionString="<%$ ConnectionStrings:testConnectionString %>"
                    SelectCommand="SELECT * FROM [cate]"></asp:SqlDataSource>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="Label2" runat="server" Text='<%# Bind("cate") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:CommandField ShowEditButton="True" />
    </Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
    ConnectionString="<%$ ConnectionStrings:testConnectionString %>"
    SelectCommand="SELECT * FROM [View_1]"></asp:SqlDataSource>
       <br />
       <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button"
               style="height: 26px" />