I tried to generate one table using C# function. That table contains four columns. SerialNo (Value coming from API and it is label), Disposition result (dropdown-options coming from API) and two more text area.
While debuging, Getting Null exception error in Disposition result. in below line
string disposResult = ((HtmlSelect)row.Cells[1].FindControl("DropDownList1")).Value;
Below is the complete code
GRIDVIEW:
<asp:GridView ID="MyGridView" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="SerialNo" HeaderText="Serial No" />
<asp:TemplateField HeaderText="Disposition result">
<ItemTemplate>
<%# Eval("Disposition result") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Disposition comment">
<ItemTemplate>
<textarea runat="server" ID="txtDispositionComment" Rows="5" CssClass="form-control" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Note for Group">
<ItemTemplate>
<textarea runat="server" ID="txtNoteForGroup" Rows="5" CssClass="form-control" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Generating DataTable Source for gridview:
protected async void serialNoFieldData()
{
string NMRValue = Request.QueryString["NMRValue"];
string apiUrl = "https://itapps/nmrapi_V2/api/nmr?NMR_Number=" + NMRValue;
using (HttpClient client = new HttpClient())
{
string apiResponse = await client.GetStringAsync(apiUrl);
JObject responseData = JObject.Parse(apiResponse);
JArray data = JArray.Parse(responseData["data"].ToString());
DataTable dt = new DataTable();
dt.Columns.Add("SerialNo");
dt.Columns.Add("Disposition result");
dt.Columns.Add("Disposition comment");
dt.Columns.Add("Note for Group");
// Get the dropdown values for the Disposition result column
string dropdownApiUrl = "https://itapps/nmrapi_V2/api/DBParameter/NMR_Form?PN=DisposRes";
string dropdownApiResponse = await client.GetStringAsync(dropdownApiUrl);
JObject dropdownData = JObject.Parse(dropdownApiResponse);
List<string> dropdownValues = new List<string>();
if ((bool)dropdownData["success"])
{
JArray dataArray = (JArray)dropdownData["data"];
foreach (string item in dataArray)
{
dropdownValues.Add(item);
}
}
foreach (JObject item in data)
{
string serialNumber = (string)item["SerialNo"];
// Populate the form fields with the retrieved values
// Add a new row to the DataTable
DataRow dr = dt.NewRow();
dr["SerialNo"] = serialNumber;
string dropdownHtml = CreateDropDownList(dropdownValues);
dr["Disposition result"] = dropdownHtml;
dr["Disposition comment"] = CreateTextArea();
dr["Note for Group"] = CreateTextArea();
dt.Rows.Add(dr);
}
// Bind the DataTable to a GridView control
MyGridView.DataSource = dt;
MyGridView.DataBind();
}
}
Code for dropdown for Disposition result field:
private string CreateDropDownList(List<string> values)
{
StringBuilder sb = new StringBuilder();
sb.Append("<select id='DropDownList1' class='form-control' style='width: 200px;'>");
foreach (string value in values)
{
sb.Append("<option value='" + value + "'>" + value + "</option>");
}
sb.Append("</select>");
return sb.ToString();
}
My Expectation is : I want to get the value which i selected in dropdown.