Как сделать, чтобы GridView DropDown выбирал строку и выполнял метод OnSelectedIndexchange? - PullRequest
0 голосов
/ 21 ноября 2018

Я надеюсь, что вопрос, который я задал, точен, потому что я пытаюсь достичь.У меня есть GridView, который отображает данные из источника SQL.Мне нужен один из столбцов, чтобы быть раскрывающимся списком.Я также ищу способ, когда при открытии раскрывающегося меню выбирается строка, а затем выполняется добавленное событие OnSelectedIndexChange.

Я извлекаю данные ячейки соответствующей выбранной строки и отправляю эти данные в таблицу SQL.Есть ли способ НЕ выбрать строку и использовать изменение раскрывающегося списка в качестве идентификатора строки?Я спрашиваю об этом, потому что есть дополнительная запись назад при выборе строки.Я искал возможность опустить меню вниз, и когда выбрано новое значение, выполнить событие change (которое отправляет данные строки в дб.)

Если мне нужно выбрать, то я должен выбрать.Но самая большая проблема, с которой я столкнулся на данный момент, заключается в том, что выбранное раскрывающееся значение не передается на C #.Вот Gridview и C #, показывающие, что я делаю.Я очень прокомментировал, потому что я не могу понять, почему это не пройдет через значение.

<div class="CurrentMonthTab" style ="height:350px; width:90%; margin-left:15px;  overflow-y: scroll; overflow-x: hidden">        
    <asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False" 
                  Width="100%" Font-Size = "11pt" 
                  CellPadding="5" ClientIDMode="Static" ShowHeader="False" 
                  HeaderStyle-BackColor="YellowGreen" DataSourceID="SqlDataSource2">
            <Columns>
                <asp:CommandField ShowSelectButton="True" />

                <asp:BoundField DataField="Client" HeaderText="Client" SortExpression="Client" ItemStyle-Width="16%" />
                <asp:BoundField DataField="UniqClient" HeaderText="UniqClient" SortExpression="UniqClient" ItemStyle-CssClass="hiddencol"  HeaderStyle-CssClass="hiddencol" />
                <asp:BoundField DataField="Expiring_Policies" HeaderText="Expiring_Policies" ReadOnly="True" SortExpression="Expiring_Policies" ItemStyle-Width="18%" ItemStyle-Wrap="True" />
                <asp:BoundField DataField="Premiums" HeaderText="Premiums" ReadOnly="True" SortExpression="Premiums" ItemStyle-Width="8%" ItemStyle-CssClass="ExpDateCSS" />
                <asp:BoundField DataField="TotalPremium" HeaderText="TotalPremium" ReadOnly="True" SortExpression="TotalPremium" ItemStyle-Width="8%" />
                <asp:BoundField DataField="Lines" HeaderText="Lines" SortExpression="Lines" ItemStyle-Width="20%" ReadOnly="True" />
                <asp:BoundField DataField="ExpDate" HeaderText="ExpDate" ReadOnly="True" SortExpression="ExpDate" ItemStyle-Width="10%" />                      
                <asp:BoundField DataField="Company" HeaderText="Company" SortExpression="Company" ItemStyle-Width="6%" ItemStyle-CssClass="ExpDateCSS" ReadOnly="True" />
                <asp:BoundField DataField="Broker_Name" HeaderText="Broker_Name" SortExpression="Broker_Name" ItemStyle-CssClass="hiddencol"  HeaderStyle-CssClass="hiddencol" />
                <asp:TemplateField HeaderText="NameOf" SortExpression="NameOf">
                    <ItemTemplate>  
                        <asp:DropDownList ID="ddlUnderWriter" runat="server"  AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_OnSelectedIndexChanged" SelectedValue='<%# Bind("NameOf") %>' DataSourceID="SqlDataSource3" DataTextField="NameOf" DataValueField="NameOf">
                        </asp:DropDownList>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="UniqBroker" HeaderText="UniqBroker" ReadOnly="True" SortExpression="UniqBroker" ItemStyle-CssClass="hiddencol"  HeaderStyle-CssClass="hiddencol" />
            </Columns>


        <HeaderStyle BackColor="YellowGreen"></HeaderStyle>
        <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="Red" />

    </asp:GridView>

Вот GridView, и у меня есть поле шаблона для выпадающего меню.

 protected void DropDownList1_OnSelectedIndexChanged(object sender, EventArgs e )
    {

        //TableCell client = GridView1.Rows[c.RowIndex].Cells[1];
       // string Client = GridView1.SelectedRow.Cells[1].Text;//Client Name
        //int UniqCNT = Int32.Parse(GridView1.SelectedRow.Cells[2].Text); //UniqClient
        //string ExpPolicyNums = GridView1.SelectedRow.Cells[3].Text;
       //int Ub = Int32.Parse(GridView1.SelectedRow.Cells[11].Text);//UniqBroker
        //string ExperationDate = GridView1.SelectedRow.Cells[7].Text; //ExpDate
        string NewUw = GridView1.SelectedRow.Cells[10].Text; //This inserts the Under Writer
       /* string Company = GridView1.SelectedRow.Cells[8].Text; //Company issuer
        string Broker = GridView1.SelectedRow.Cells[9].Text;  //Broker_Name
        string Premium = GridView1.SelectedRow.Cells[4].Text; //Premiums
        string TotalPremium = GridView1.SelectedRow.Cells[5].Text; //Total premiums
        string Reviewed = "No"; //Updates the DB and shows that it hasn't been reviewed by the Message Creator
                                //DateCreated gets inserted when record is created */
       // string NewUw = ddlUnderWriter1.SelectedValue;


        DateTime dateUpDated = DateTime.Now; //Inserts a dateUpdated record
        if (String.IsNullOrEmpty(NewUw))
        {
            string empty = "empty fin box";
            MessageBox.Show(empty);
        }
        else
        {
            MessageBox.Show(NewUw);
        }

        // int UpR = Int32.Parse(vRenewalReport.SelectedRow.Cells[9].Text); //UniqProducer. This will always submit NULL due to not 
        // intially receving the UniqProducer data in the GridView

        /*
        string query = "INSERT INTO [GTU_Apps].[dbo].[Reviewed_Renewal_Policy] (UniqClient, Client, [Expiring_Policies], Premiums, TotalPremium, UniqBroker, ExpDate, NewUw, Company, Broker_Name,  Reviewed, DateUpdated) " +
            "VALUES (@UniqCNT, @Client, @ExpPolicyNums, @Premium, @TotalPremium, @Ub, @ExperationDate, @NewUw, @Company, @Broker,  @Reviewed, @dateUpDated)";

        using (SqlConnection conn = new SqlConnection("Data Source=GTU-BDE01;Initial Catalog=GTU_Apps;Integrated Security=True"))
        {
            using (SqlCommand comm = new SqlCommand(query, conn))
            {
                comm.Parameters.AddWithValue("@UniqCNT", UniqCNT);
                comm.Parameters.AddWithValue("@Client", Client);
                comm.Parameters.AddWithValue("@ExpPolicyNums", ExpPolicyNums);
                comm.Parameters.AddWithValue("@Premium", Premium);
                comm.Parameters.AddWithValue("@TotalPremium", TotalPremium );
                comm.Parameters.AddWithValue("@Ub", Ub);
                comm.Parameters.AddWithValue("@ExperationDate", ExperationDate);
                comm.Parameters.AddWithValue("@NewUw", NewUw);
                comm.Parameters.AddWithValue("@Company", Company);
                comm.Parameters.AddWithValue("@Broker", Broker);

                comm.Parameters.AddWithValue("@Reviewed", Reviewed);
                comm.Parameters.AddWithValue("@dateUpDated", dateUpDated);
                conn.Open();
                comm.ExecuteNonQuery();
                conn.Close();
            }
        }*/
        End(sender, e);
    }

Вот код позади.Многое из этого закомментировано, потому что мне нужно было выделить выпадающий список и выяснить, почему он не проходит через значение.Вы можете видеть, что я проверяю, является ли строка нулевой или пустой.Затем быстро отобразите его с окном сообщений для целей тестирования.Даже если я намеренно выберу строку, а затем внесу изменения в раскрывающийся список, он покажет, что он пуст.Любая помощь будет принята с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...