asp.net - 下拉列表在重定向到另一个 Web 表单页面时失去其价值内容
问题描述
我需要一些帮助来解决这个问题。一个星期以来,我有点卡住了,我什至向另一位程序员寻求帮助,他也不知道该怎么做。我会解释一切。
基本上我在一个名为“Tabla_Gestiones.aspx”的网络表单页面中有这个网格视图
<asp:GridView ID="gvwGestiones" runat="server" CellPadding="10" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="2px" AutoGenerateColumns="False" DataKeyNames="intIdGestiones" AllowSorting="True" CellSpacing="10" HorizontalAlign="Center" Width="50%" >
<Columns>
<asp:buttonfield buttontype="Button" runat="server" commandname="Select" text="Detalle" />
<asp:HyperLinkField Text="Modificar" DataNavigateUrlFields="intIdGestiones" DataNavigateUrlFormatString="Modificar_Gestiones-SistemaRegistroGestiones.aspx?intIdGestiones={0}" />
<asp:BoundField DataField="intIdGestiones" HeaderText="Código de Gestión" >
<HeaderStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="vchTipoGestiones" HeaderText="Tipo de Gestión" >
<HeaderStyle Width="200px"></HeaderStyle>
</asp:BoundField>
<asp:BoundField DataField="intCedulaUsuario" HeaderText="Cédula del Denunciante" >
<HeaderStyle Width="200px"></HeaderStyle>
</asp:BoundField>
<asp:BoundField DataField="vchNombreUsuario" HeaderText="Nombre del Denunciante" >
<HeaderStyle Width="200px"></HeaderStyle>
</asp:BoundField>
<asp:BoundField DataField="dtiFechaIngreso" HeaderText="Fecha de Ingreso" HeaderStyle-Width="120px">
<HeaderStyle Width="120px"></HeaderStyle>
</asp:BoundField>
<asp:BoundField DataField="vchFuenteGeneradora" HeaderText="Fuente Generadora" HeaderStyle-Width="120px">
<HeaderStyle Width="120px"></HeaderStyle>
</asp:BoundField>
<asp:BoundField DataField="vchDescripcionUnidad" HeaderText="Descripción Unidad" HeaderStyle-Width="120px" >
<HeaderStyle Width="120px"></HeaderStyle>
</asp:BoundField>
<asp:BoundField DataField="vchDescripcionDespacho" HeaderText="Descripción Despacho" HeaderStyle-Width="120px">
<HeaderStyle Width="120px"></HeaderStyle>
</asp:BoundField>
</Columns>
</asp:GridView>
<asp:SqlDataSource runat="server" ID="sdsGridView_Gestiones" ConnectionString='<%$ ConnectionStrings:bda_SIREGE_Connection %>' SelectCommand="mostrarGestiones" SelectCommandType="StoredProcedure" ></asp:SqlDataSource>
是一个简单的gridview,问题就来了。当我选择 HyperLinkField 时,它会将我带到另一个名为“Modificar_Gestiones.aspx”的网络表单
此页面的目的是读取 gridview 的数据并将信息打印到第二个 aspx 页面内的文本框中。这是我用来从 gridview 获取数据的代码:
Private ReadOnly Property id As Integer
Get
Return If(Not String.IsNullOrEmpty(Request.QueryString("intIdGestiones")), Integer.Parse(Request.QueryString("intIdGestiones")), 0)
End Get
End Property
Private Sub TomarGestion()
Dim strQuery As String = "palAgarrarGestiones"
Dim con As New SqlConnection(strConnString)
Dim cmd As New SqlCommand()
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = strQuery
cmd.Connection = con
cmd.Parameters.AddWithValue("@intIdGestiones", id)
Dim da As SqlDataAdapter = New SqlDataAdapter(cmd)
Dim dt As DataTable = New DataTable()
da.Fill(dt)
For Each dr As DataRow In dt.Rows
Me.txtId_Gestiones.Text = dr("intIdGestiones").ToString()
Me.rblTipo_Gestion.Text = dr("vchTipoGestiones").ToString()
Me.txtCedula_Usuario.Text = dr("intCedulaUsuario").ToString()
Me.txtNombre_Usuario.Text = dr("vchNombreUsuario").ToString()
Me.txtFecha_Ingreso.Text = Convert.ToDateTime(dr("dtiFechaIngreso").ToString())
Me.ddlFuente_Generadora.Text = dr("vchFuenteGeneradora").ToString()
Me.ddlDescripcion_Unidad.Text = dr("vchDescripcionUnidad").ToString()
Me.txtDespacho.Text = dr("vchDescripcionDespacho").ToString()
Next
End Sub
这里 txt 表示文本框,ddl 表示下拉列表。这段代码有效,但只有一个给我这个问题:“Me.ddlDescripcion_Unidad.Text = dr("vchDescriptcionUnidad").ToString()"
它总是返回
Details of the Exception: System.ArgumentOutOfRangeException: 'ddlDescripcion_Unidad'has a SelectedValue that is not valid since doesn't exist in the element list.
Parameter name: value
我对其进行了调试,显然 ddlDescriptcion_Unidad 中的值消失了,因此由于下拉列表为空,因此所选项目无法工作。我不知道该怎么做。ddlDescriptcion_Unidad 是一个特殊的下拉列表,我将向您展示:
<td class="auto-style3"><asp:DropDownList ID="ddlDescripcion_Unidad" runat="server" CssClass="form-control input-sm" Height="29px" Width="283px" AutoPostBack="True" OnSelectedIndexChanged="ddlDescripcion_Unidad_SelectedIndexChanged" DataSourceID="sdsDescripcion_Unidad" DataTextField="vchDescripcionUnidad" DataValueField="intIdUnidad" ></asp:DropDownList >
<asp:SqlDataSource runat="server" ID="sdsDescripcion_Unidad" ConnectionString='<%$ ConnectionStrings:bda_SIREGE_Connection %>' SelectCommand="palConsultarUnidades" SelectCommandType="StoredProcedure"></asp:SqlDataSource></td>
这样做是因为 Unidad 是一个表,而 Gestiones 是另一个表,而 Gestiones 需要 Unidad 表中的 vchdescripcionesUnidad 所以要插入它,我需要这样做。
请任何人在这里帮助我这是我必须修复以完成系统的最后一件事,我不知道该怎么做我没有想法......我将不得不尝试掩盖错误,但我真的不想。
在有人询问存储过程 palAgarrarGestiones 之前确实显示了信息。我认为这个问题发生在前端而不是数据库......
解决方案
首先,为什么我们需要知道或关心前一页的一些列表视图或网格视图?(回答:我们不需要这些信息,也没有帮助)。
(因此您提供的各种信息都无关紧要——这可能有助于解释您在这里遇到的麻烦)。
如上所述,您的问题是:
我有一个下拉列表 - 我无法为该下拉列表分配一个值。
一行代码!!!
嗯,第一个问题是一个下拉列表有两个值。显示值和“后面”值。因此,用两个值填充组合框(下拉列表)是很常见的。
你有:
DataTextField="vchDescripcionUnidad"
DataValueField="intIdUnidad"
那么你想在这里分配什么样的价值呢?
您不能直接为下拉列表分配“文本”值。您必须推入 DataValue - 而不是文本。
因此,通过“隐藏值”设置,您可以使用以下代码:
DropDownList1.Text = 78
或者
DropDownList1.SelectedValue = 78
但是,如果我们只有“文本”值而不是数字(DataValue)怎么办。
(所以请记住 dropdown.Text = 后面的数据值 - 而不是显示文本字段)。
通过一些文本(显示)值来设置?我们必须找到+搜索列表。
MS-Access 和 VB6 可能允许分配任何一种方式。
但是,我们不能这样做:
DropDownList1.SelectedItem = "Athabasca Hotel"
所以,我们必须这样做:
DropDownList1.SelectedValue = DropDownList1.Items.FindByText("Athabasca Hotel").Value
所以这里所说的问题是一行代码。所以这里所说的问题是如何为下拉列表分配一个文本值,而不是后面的值。
所有其他代码、注释等都与这个问题无关。
但是,如果我们想通过文本显示值来分配下拉列表呢?您必须将“文本”提供的值转换为用于该下拉列表的数字值。
所以这:
Me.ddlDescripcion_Unidad.Text = dr("vchDescripcionUnidad")
变成
Me.ddlDescripcion_Unidad.Text = ddlDescripcion_Unidad.Items.FindByText(dr("vchDescripcionUnidad")).Value
编辑:
好的,虽然以上所有内容都是“乐趣和游戏”?我们需要处理、思考、处理和解决的第一个问题也是唯一一个问题是获取/抓取/拉出我们想要处理的行——这实际上是我们开始工作所需的全部内容。所有这些代码,在下一页设置组合框等?这一切都发生在我们得到一个简单的想法之后,即选择一个行值传递给另一个例程的简单概念。
所以,让我们来解决这个问题:
我们有这个:
<asp:HyperLinkField Text="Modificar"
DataNavigateUrlFields="intIdGestiones"
DataNavigateUrlFormatString="Modificar_Gestiones-
SistemaRegistroGestiones.aspx?intIdGestiones={0}" />
我们可以将上面的更改为:
<asp:HyperLinkField Text="Modificar"
DataNavigateUrlFields="intIdGestiones"
DataNavigateUrlFormatString="Modificar_Gestiones-
SistemaRegistroGestiones.aspx?intIdGestiones='<%# Eval("intIdGestiones") %>' />
所以现在当你点击链接字段时,intIdGestionses 的值应该被传递到你的第二页。
推荐阅读
- javascript - 如何在 javascript fullCalendar 中添加事件
- python - InvalidSchema 没有连接适配器 Python 请求
- grpc - gRPC 的 Trailer 与通常的标头有何不同
- javascript - 如何使用机器人在 Discord 上创建“仅限媒体”频道?(JS)
- java - Spring 在彼此内部注入一个接口的不同实现
- google-sheets - 如何平均来自非空且非零的特定单元格的值?
- processing - saveframe() 将屏幕截图保存到文件中,但无法读取处理中的图像文件
- javascript - 正确的 id 是如何发送到 onDelete 的?我没有在 onClick 中发送任何 id,那么 onDelete 是如何知道传递给它的 id 的呢?
- python - matplotlib set_data()不更新下一次绘图()的绘图
- if-statement - 谷歌表格 - 基于另一个表格中单元格值的条件格式 - 自定义公式