【问题标题】:set label value in vb.net在 vb.net 中设置标签值
【发布时间】:2010-06-02 00:35:50
【问题描述】:

我通常是一个 PHP 人,但在 vb.net 中做一个项目时卡住了。

我有一个返回单个值(最后更新日期)的查询(sqldatasource)。

我想用一个标签来表达类似“上次更新:”

在 PHP 中这很简单。在 vb.net 中,我能找到的只是无尽的糟糕代码,展示了如何执行 onLoad 查询,然后将其绑定到标签。

这真的是唯一的方法吗?有这么长的解决方案似乎是一个可笑的简单问题。我用了一个datagrid控件直接绑定查询结果,但是它打印列名和日期,所以不太理想。

有什么想法吗?

【问题讨论】:

标签: asp.net vb.net data-binding label


【解决方案1】:

在您的 Page_Load 方法中,运行您的查询。在您的 page.aspx 上,您有一个表单控件,我们称之为 label1。设置 label1.text = queryResult。

Sub Page_Load()
  dim myConnection as new data.sqlclient.sqlconnection
  dim myCommand as new data.sqlclient.sqlcommand
  dim sqlReader as data.sqlclient.sqldatareader
  myConnection.connectionString = 'enter your connection string details'
  myConnection.Open()
  myCommand = New SqlCommand("Select lastUpdated from yourTable", myConnection)
  sqlReader = myCommand.ExecuteReader()
  if sqlReader.hasRows then
    sqlReader.read()
    label1.text = Format("MM/dd/yyyy", sqlReader("lastUpdated"))
  end if
End Sub

还有你的 page.aspx(某处)

<asp:label id="Label1" runat="server" />

PS - 我可能对上面的格式功能关闭了一段时间。

根据用户评论进行编辑:

好吧,对于您正在做的事情,我不会真正推荐 SQLDataSource,因为它实际上是要绑定到诸如 gridview 或中继器之类的控件。但是,如果要使用 SQLDataSource,则需要在代码隐藏中绑定到 DataView。从那里,您可以按名称访问每一行(您应该只有一个)和列。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim dv As New Data.DataView
    'use the id of your SqlDataSource below'
    dv = SqlDataSource1.Select(DataSourceSelectArguments.Empty)
    Label1.Text = dv.Table.Rows(0)("LastUpdated")
End Sub

使用来自 web.config 的连接字符串:

Web.Config 文件:

<appSettings>  
   <add key="strConnectionString" value="Data Source=192.168.0.55;Database=Times;User ID=sa;PassWord=sa"/> 
</appSettings>

代码背后:

     Dim sqlConn as new data.sqlClient.SqlConnection()
     sqlConn.ConnectionString=ConfigurationManager.ConnectionStrings("strConnectionString").ConnectionString
     sqlConn.Open()

【讨论】:

  • 感谢 Tommy——您能解释一下我如何通过这种方法使用 SqlDataSource 吗?或者,如果这不可能或不可取,如何在此代码中使用预定义的连接字符串?
  • 谢谢,非常感谢您抽出宝贵时间帮助解决此问题。我想我已经很接近了,但是由于某种原因,我没有得到任何要打印的数据。我按照您的建议从 sqldatasource 切换到了代码隐藏方法,并且为了测试我在 If sqlReader 中添加了一个“else”子句.HasRows 然后 sqlReader.Read() label.Text = Format("MM/dd/yyyy", sqlReader("LastUpdate")) Else label.Text = "no data" End 如果这看起来可行——但是没有值被打印出来。有什么想法吗?
  • 知道了,需要在页面加载功能中添加“Handles Me.Load”。感谢您的帮助!
  • 对不起,我没有使用 page_load 函数,不应该有。这是代码的完整正确 page_load 行:Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load。提示:(一直想使用它!):在 VS 中,当您在代码隐藏中时,您会在代码窗口顶部看到两个下拉菜单。左边是这个页面可以访问的对象(标签、网格等)。正确的是用于该对象的方法和事件。从左侧选择(页面事件),然后从右侧选择(加载)。是否自动生成。
  • ..为您提供正确的方法签名。没问题,快乐学习。 .NET 是一个广泛而强大的框架。我的前几个项目到现在,我发现自己发现了更快/更好/不同的方法来做同样的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多