У меня есть сетка с rowcommand
и linkbutton
.Когда я нажимаю кнопку ссылки, строка редактируется, однако DDL должен связать данные со значениями из моей базы данных, но это не работает
Я не знаю, является ли это правильным способом, но я получаю ошибкупри нажатии кнопки ссылки " Ссылка на объект не установлена на экземпляр объекта ."но я не думаю, что это главная проблема здесь.
должен ли я связать свою строку DDL при редактировании из Rowcommand или кто-нибудь может увидеть, что я делаю не так?
Разметка ASPX для столбца DDL:
<asp:TemplateField HeaderText="Status">
<EditItemTemplate>
<asp:DropDownList ID="ddlStatusRow" AppendDataBoundItems="True" runat="server" >
<asp:ListItem>Status</asp:ListItem>
</asp:DropDownList>
<asp:RequiredFieldValidator ID="rfEditStatus" runat="server" ErrorMessage ="Status is a required field"
ControlToValidate="ddlStatusRow" Text="*" ForColor="Red" InitialValue="Status">
</asp:RequiredFieldValidator>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Status") %>'></asp:Label>
</ItemTemplate>
<HeaderStyle BackColor="#E6E6E6" Font-Bold="False" Font-Names="Arial" Font-Size="14px" ForeColor="Black" />
<ItemStyle Font-Size="12px" HorizontalAlign="Center" Width="4%" />
</asp:TemplateField>
CodeBehind:
protected void gwUnplannedActivities_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "EditRow")
{
int rowIndex = ((GridViewRow)((LinkButton)e.CommandSource).NamingContainer).RowIndex;
gwUnplannedActivities.EditIndex = rowIndex;
BindGridViewUnplannedActivities();
GridViewRow row = ((e.CommandSource as Control).NamingContainer as GridViewRow);
DropDownList ddlStatusRow = (DropDownList)row.Cells[3].FindControl("ddlStatusRow");
string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
using (SqlConnection con = new SqlConnection(CS))
{
SqlCommand cmd = new SqlCommand("SELECT * FROM ....", con);
con.Open();
ddlStatusRow.DataSource = cmd.ExecuteReader();
ddlStatusRow.DataTextField = "Status";
ddlStatusRow.DataBind();
}
}
else if (e.CommandName == "CancelUpdate")
{
//somecode....
}
else if (e.CommandName == "UpdateRow")
{
//somecode....
}
}