ASP.NET 网格视图的选定值变为空值



我在使用 ASP NET 网格视图时遇到问题,我在网格视图中一直使用默认选择按钮,问题是这次不起作用。

我能说的唯一区别是,现在我正在使用数据源的数据表。(而不是列表<>(。

网页代码:

<asp:GridView ID="dgv_cursos_materia" runat="server" AutoGenerateColumns="False" DataKeyNames="id" OnSelectedIndexChanged="dgv_cursos_materia_SelectedIndexChanged1" SelectedIndex="0">
<Columns>
<asp:BoundField DataField="id" HeaderText="ID Materia" />
<asp:BoundField DataField="nombre_comision" HeaderText="Comision" />
<asp:BoundField DataField="anio_calendario" HeaderText="Año " />
<asp:BoundField DataField="cupo" HeaderText="Cupo" />
<asp:CommandField ShowSelectButton="True" />
</Columns>
</asp:GridView>

C# 代码:

protected void dgv_cursos_materia_SelectedIndexChanged1(object sender, EventArgs e)
{
this.ViewState["curso"] = (int)this.dgv_cursos_materia.SelectedValue; // - Error is here. SelectedValue gets null.
this.lbl_test.Text = this.ViewState["curso"].ToString();
}

我不知道为什么这对我不起作用。我对同一表单上的其他两个网格视图做了同样的事情,它们有效。. 正如我告诉您的,这是我使用数据表"填充"网格视图的第一个。

我的问题是 SelectedValue 变为空。

对不起我的英语,希望你能理解。

您可以使用SelectedRow 访问它

protected void dgv_cursos_materia_SelectedIndexChanged1(object sender, EventArgs e)
{
GridViewRow row = dgv_cursos_materia.SelectedRow;
var id =  (int)row.Cells[0].Text
}

我已经复制了您的代码并用数据表填充网格视图,它对我来说效果很好,并在lbl_test中将 id 作为我选择的值。发短信;

下面是我的代码,

对于 cs 文件 :-

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = FlyingPopDataHandler.getFlyingPopCityAndStateName("MX4TX9GPCFP0MNU");
dgv_cursos_materia.DataSource = dt;
dgv_cursos_materia.DataBind();
}
}
protected void dgv_cursos_materia_SelectedIndexChanged1(object sender, EventArgs e)
{
this.ViewState["curso"] = (string)this.dgv_cursos_materia.SelectedValue; 
this.lbl_test.Text = this.ViewState["curso"].ToString();
}

对于 aspx 文件:-

<asp:GridView ID="dgv_cursos_materia" runat="server" AutoGenerateColumns="False" DataKeyNames="campaign_id" OnSelectedIndexChanged="dgv_cursos_materia_SelectedIndexChanged1" SelectedIndex="0">
<Columns>
<asp:BoundField DataField="campaign_id" HeaderText="FpId" />
<asp:BoundField DataField="city" HeaderText="City" />
<asp:BoundField DataField="state" HeaderText="state" />
<asp:CommandField ShowSelectButton="True" />
</Columns>
</asp:GridView>
<asp:Label ID="lbl_test" runat="server"></asp:Label>

尝试这种方式可能会解决您的问题, 使用上面的代码验证您的代码 在数据表中获取任何数据是否有任何错误,特别是数据库字段id? 只需检查一次。

最新更新