Я надеюсь, что вопрос, который я задал, точен, потому что я пытаюсь достичь.У меня есть 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);
}
Вот код позади.Многое из этого закомментировано, потому что мне нужно было выделить выпадающий список и выяснить, почему он не проходит через значение.Вы можете видеть, что я проверяю, является ли строка нулевой или пустой.Затем быстро отобразите его с окном сообщений для целей тестирования.Даже если я намеренно выберу строку, а затем внесу изменения в раскрывающийся список, он покажет, что он пуст.Любая помощь будет принята с благодарностью.