在代码隐藏中,您将TVP添加为存储过程的SqlDbType.Structured但这在ASP.NET SqlDataSource控件中不存在.
我已将我的Datatables存储在会话变量中(不要担心它们很小!)我需要将它们作为参数传递给SqlDataSource(它有许多数据绑定对象)
我将Datasource指向了session变量,但在转换为表类型时失败了.
编辑:假设我将Session变量从等式中取出(因为,实际上,它完全相切)
必须有一种方法可以将DBType.Structured附加到SQLDataSource.我的列表视图是适当的数据绑定,但它们附加的商店程序必须采用TVP
我无法相信没有办法为SQLDataSource发送TVP参数?我有什么选择?
EDIT2:我一直在寻找为SqlDataSource创建一个自定义参数,但在我看来,它的"eval"方法对结构化数据类型不满意
EDIT3:我的唯一选择就是为我的数据绑定控件完成代码隐藏的所有工作.我添加了赏金以防其他任何人有一个优雅的解决方案.
编辑方式4:或许,有一种方法可以将表作为对象传递给存储过程,然后让SQL Server将其转换为TVP吗?
我正在asp:GridView使用显示客户端请求asp:SqlDataSource.我想限制客户显示的信息:
View.aspx必须显示所有内容,View.aspx?client=1必须仅显示来自客户端ID#1的请求.
所以我<asp:QueryStringParameter Name="client" QueryStringField="client" />用于查询"EXEC getRequests @client".
指定某个客户端时,一切正常.但不要 - 如果不是.
我使用SSMS测试了我的SP - 它在两种情况下都正常工作 - 指定参数时和不显示参数时(NULL显式传递).
我做了什么?
我试图做到这正如前面问道.我找到的唯一区别是上面代码中包含的附加List项.
我试图使用,AppendDataBoundItems=true但它仍然无法正常工作.我还想将其默认值设置为itemtemplate标签中显示的值,即DropDownList,SelectedValue='<%# Eval("DepartmentName") %>'但是我在下拉列表中无法使用该属性.可能是什么原因.??
<EditItemTemplate>
<asp:DropDownList ID="ddlDepartment_Edit" runat="server"
DataSourceID="dsDepartment_Edit" DataTextField="DepartmentName"
DataValueField="PK_DepartmentId">
</asp:DropDownList>
<asp:SqlDataSource ID="dsDepartment_Edit" runat="server"
ConnectionString="<%$ ConnectionStrings:BlackHillsConnect %>"
ProviderName="System.Data.SqlClient" SelectCommand="sp_GetDepartmentDropDown"
SelectCommandType="StoredProcedure">
</asp:SqlDataSource>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblDepartmentName" runat="server" Text='<%# Eval("DepartmentName") %>' >
</asp:Label>
</ItemTemplate>
Run Code Online (Sandbox Code Playgroud)
我在用 GridView
当我们可以使用简单的SQL语句直接与数据库通信时,我想了解数据集的用途.另外,哪种方式更好?更新数据集中的数据,然后立即将它们传输到数据库或直接更新数据库?
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim LoginChecker As New SqlDataSource()
LoginChecker.ConnectionString = ConfigurationManager.ConnectionStrings("A1ConnectionString1").ToString()
LoginChecker.SelectCommandType = SqlDataSourceCommandType.Text
LoginChecker.SelectCommand = "SELECT username FROM A1login WHERE username=@username AND password=@password"
LoginChecker.SelectParameters.Add("username", username.Text)
LoginChecker.SelectParameters.Add("password", password.Text)
Dim rowsAffected As Integer = 0
Try
rowsAffected = LoginChecker.<what i have to write here>
Catch ex As Exception
'Server.Transfer("LoginSucessful.aspx")
Finally
LoginChecker = Nothing
End Try
username.Text = rowsAffected
' If rowsAffected = 1 Then
'Server.Transfer("A1success.aspx")
' Else
'Server.Transfer("A1failure.aspx")
' End If
End …Run Code Online (Sandbox Code Playgroud) 我在我的 SqlDataSource 上有一个针对我的 SelectCommand 的 sql 查询。它看起来像下面这样:
SELECT * FROM Books WHERE BookID = @BookID
Run Code Online (Sandbox Code Playgroud)
TextBox 使用 Asp:ControlParameter 提供 @BookID 参数。
当我在单步执行代码时查看 SelectCommand 时,我看到:
SELECT * FROM Books WHERE BookID = @BookID
Run Code Online (Sandbox Code Playgroud)
我真正想看到的是,如果这个人在 TextBox 中输入 3,我想看到
SELECT * FROM Books WHERE BookID = 3
Run Code Online (Sandbox Code Playgroud)
我不知道如何访问上述内容?
我知道 Int16 的 Sql 等价物是 SqlInt16。
但是,UInt16、UInt32 和 Uint64 的 Sql 等价物是什么?
我有一个asp.net页面,其中有几个已SqlDataSources定义,将数据提供给一些图表.图形产品不能正常处理"无数据",并抛出异常.我想要这样处理这种情况 - 所以我需要SqlDataSource在渲染图形之前检查返回的数据(如果没有,只需发布一条消息说"无数据"或其他东西).
有没有一种简单的方法可以检查数据源是否返回数据,并且如果/然后没有一堆代码,那么这样做?
我一直试图找到这个问题的答案好几天,我发现很难相信这不可能做到.
我想要在DataSet/DataTable构建页面时SqlDataSource.Select由ASP.NET运行时自动调用方法时构建.
我知道我可以在代码后面运行它,但这使得第二次访问数据库,我真的想避免这种情况.我遇到的每个例子都告诉你在后面的代码中执行Select方法.
有没有办法访问已经检索的数据?
我正在使用TemplateFieldin从数据库GridView实现edit/delete。
我正在使用控件查询数据SqlDataSource。
当我从页面编辑表格时,出现以下错误:
“DropDownList1”的 SelectedValue 无效,因为它不存在于项目列表中。参数名称:值
这是因为 dB 中的数据与任何国家/DropDownList地区名称都不匹配。
我从这个问题理解了问题(那里没有给出解决方案!)
我认为当我将数据插入 dB 时,它会自动向数据添加冗余空格(例如国家/地区名称)
因此,一种解决方案是从字符串中删除空格(修剪),以便值在其中一项中匹配DropDownList。
因为<asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Eval("Country")%>'
与 DropDownList 的任何列表项都不匹配
但
<asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Eval("Country").ToString().Trim()%>'>
Run Code Online (Sandbox Code Playgroud)
与 DropDownList 的列表项匹配。
现在我想将数据更新回数据库,但存储的不是国家/地区名称空值。
(我认为这是 的限制Eval())
Bind()
我可以使用但Bind不支持将数据更新回 dB ToString().Trim(),因此我无法修剪字符串以匹配 DropDownList 中的一项。
如何将数据更新回 dB?
我的原始代码
sqldatasource ×10
asp.net ×8
c# ×6
data-binding ×2
sql ×2
vb.net ×2
.net ×1
ado.net ×1
dataset ×1
gridview ×1
sql-server ×1
sqldatatypes ×1
winforms ×1