我有一个SqlDataSource,它为ID返回1个字段(1行)。我想获得该结果并将其显示在TextBox中。我通常会使用存储过程来执行此操作(因为已经创建了存储过程),但是我认为SqlDataSource会更容易。有没有一种方法可以将该结果绑定到我的TextBox上?
<asp:SqlDataSource ID="ds1" runat="server"
ConnectionString="<%$ ConnectionStrings:conn1%>"
ProviderName="<%$ Connectionstrings:conn1.ProviderName %>"
SelectCommand="sp_1"
SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:Parameter Name="accountID" Type="Int32" />
<asp:Parameter Name="activitydate" Type="DateTime" Direction="Output" />
</SelectParameters>
</asp:SqlDataSource>
Run Code Online (Sandbox Code Playgroud) 我使用以下链接中的解决方案隐藏我的列
但是,这会导致更新操作出现问题,因为gridview充当隐藏行具有null值.那么如何在数据绑定后隐藏列?
protected void begv_OrderDetail_RowCreated(object sender, GridViewRowEventArgs e)
{
((DataControlField)begv_OrderDetail.Columns.Cast<DataControlField>().Where(fld => fld.HeaderText == "FileNo").SingleOrDefault()).Visible = "False";
}
Run Code Online (Sandbox Code Playgroud) 好的,我已经通过使用更新参数解决了我的最后一个问题,并将模板字段放在我的网格视图上而不是绑定字段上。
\n\n显示正常,唯一的问题是更新按钮似乎不起作用。当我单击它时,它只是返回到上一个窗口,而不更新数据库中的数据字段。
\n\n你能看一下下面的代码并告诉我我是否错过了什么吗?谢谢....
\n\n <asp:GridView DataKeyNames="BenutzerID" ID="grdBenutzer" runat="server" Visible="False" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" OnRowCommand="GridView1_RowCommand">\n <Columns>\n <asp:BoundField ReadOnly="true" DataField="BenutzerID" HeaderText="ID" />\n <asp:TemplateField HeaderText="Titel">\n <ItemTemplate>\n <%# Eval("Titel")%>\n </ItemTemplate>\n <EditItemTemplate>\n <asp:TextBox runat="server" ID="txtTitel" Text=\'<%# Bind("Titel")%>\'></asp:TextBox>\n </EditItemTemplate>\n </asp:TemplateField>\n <asp:TemplateField HeaderText="Bezeichnung">\n <ItemTemplate>\n <%# Eval("Bezeichnung")%>\n </ItemTemplate>\n <EditItemTemplate>\n <asp:DropDownList AppendDataBoundItems="true" runat="server" ID="ddwnBezeichnung" Text=\'<%# Bind("Bezeichnung")%>\'>\n <asp:ListItem Text="Mitarbeiter" Value="Mitarbeiter"></asp:ListItem>\n <asp:ListItem Text="Praktikant" Value="Praktikant"></asp:ListItem>\n <asp:ListItem Text="Azubi" Value="Azubi"></asp:ListItem>\n <asp:ListItem Text="Umsch\xc3\xbcler" Value="Umsch\xc3\xbcler"></asp:ListItem>\n </asp:DropDownList>\n </EditItemTemplate>\n </asp:TemplateField>\n <asp:TemplateField HeaderText="Vorname">\n <ItemTemplate>\n <%# Eval("Vorname")%>\n </ItemTemplate>\n <EditItemTemplate>\n <asp:TextBox runat="server" ID="txtVorname" Text=\'<%# Bind("Vorname")%>\'/>\n </EditItemTemplate>\n </asp:TemplateField>\n <asp:TemplateField HeaderText="Nachname">\n …Run Code Online (Sandbox Code Playgroud) 我试图从文本框中插入值,但收到错误消息,无法在控制参数中找到 controlid。TextBox 位于表单视图内,而表单视图位于列表视图内。SqlDataSource 位于 ListView 之外。
我的 InsertButton_Click 方法
protected void InsertButton_Click(object sender, EventArgs e)
{
var ctrl = (Control)sender;
var formview = (FormView)ctrl.NamingContainer;
formview.ChangeMode(FormViewMode.Insert);
SectionListView.DataSource = SectionDataSource;
SectionListView.DataBind();
}
Run Code Online (Sandbox Code Playgroud)
插入项目模板
<InsertItemTemplate>
<tr style="">
<td>
<div style="font-size: .8em;">
<asp:FormView ID="SectionFormView" runat="server" DataKeyNames="SectionItemID" DataSourceID="SectionDataSource">
<ItemTemplate>
<asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="Insert" OnClick="InsertButton_Click" Font-Size="1.2em" />
<asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="Clear" Font-Size="1.2em" />
<asp:Label ID="SectionItemLabel" runat="server" Text="SectionItem" Font-Bold="true" Font-Size="1.2em" />
<asp:TextBox ID="SectionItemTextBox" runat="server" />
<asp:Label ID="SectionItemSubLabel" runat="server" Text="SectionItem Label" Font-Bold="true" Font-Size="1.2em" />
<asp:TextBox ID="SectionItemLabelTextBox" …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的应用程序中创建一个搜索框,为此我需要修改 SqlDataSource.SelectCommand。我将不胜感激任何帮助!
为了进行测试,我这样做了,它可以工作,但很容易受到 sql 注入的攻击
SqlDataSource1.SelectCommand = "sp_offer_search '" + txtSearch.Text + "', " + Session["customerId"] + " , '" + "Pending"+ "'";
GridView1.DataBind();
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所尝试的,但它不起作用:
if (txtSearch.Text != "")
{
//open connection
oCn.Open();
SqlCommand com = new SqlCommand(query, oCn);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.AddWithValue("@Variable", txtSearch.Text);
com.Parameters.AddWithValue("@CustomerId",Session["customerId"]);
com.Parameters.AddWithValue("@Status", txtStatus.Text);
DataTable dt = new DataTable();
dt.Load(com.ExecuteReader());
SqlDataSource1.SelectCommand = dt.ToString();
GridView1.DataBind();
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用基于参数化输入的SQL数据源填充数据表.棘手的是,参数化输入的值仅在后面的代码中可用,所以我被迫在页面代码中编写SQL数据源
我该怎么做(我使用的是C#和ASP.Net 4.0)
asp.net页面中创建sql数据源连接的当前代码是:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:LicensingConnectionString %>"
SelectCommand="SELECT * FROM [commissions] where username=@username "></asp:SqlDataSource>
Run Code Online (Sandbox Code Playgroud)
我希望在@username中使用的值在此代码后面的代码中检索
IPrincipal p = HttpContext.Current.User;
// p.Identity.Name : this is what we will use to call the stored procedure to get the data and populate it
string username = p.Identity.Name;
Run Code Online (Sandbox Code Playgroud)
谢谢 !
我有一个填充另一个页面的查询字符串参数,当该参数以主题标签 # 开头时就会出现问题
例如:mysitepage/Details?param=#456
当然,发生这种情况是因为 url 中的主题标签结束了请求。问题是这些是来自数据库的 ID,无法更改。除了使用查询字符串之外,是否有任何解决办法可以告诉我。
编辑1-
我意识到我正在对问题所在的整个网址进行编码。现在我只做参数部分,但现在似乎使参数静态而不是动态:
例子 :
String.Format("mysite.com?param="+Server.UrlEncode({0}), Eval("param"))
Run Code Online (Sandbox Code Playgroud)
基本上它对大括号中的 0 进行编码,而不是实际的评估值
你能解释一下数据源参数中Type和DbType的区别吗?分配这两个属性的最佳实践是什么?
我有一个 ASP 按钮链接,GridView1点击后应该从数据库表中删除一个项目,我收到以下错误消息:
Deleting is not supported by data source 'SqlDataSource1' unless DeleteCommand is specified.
Run Code Online (Sandbox Code Playgroud)
这是代码:
网络
Protected Sub GridView1_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles GridView1.RowCommand
If e.CommandName.Equals("Delete") Then
Dim rowIndex As Integer = Convert.ToInt32(e.CommandArgument)
Dim rowID As String = e.CommandArgument.ToString()
Dim conn As New SqlConnection("Data Source=BRIAN-PC\SQLEXPRESS;Initial Catalog=master_db;Integrated Security=True;")
Dim cmd As New SqlCommand("DELETE content WHERE content_id=@rowID", conn)
cmd.Parameters.AddWithValue("@rowID", rowID)
conn.Open()
cmd.ExecuteNonQuery()
conn.Close()
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
ASP
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" DataSourceID="SqlDataSource1" ForeColor="#333333" GridLines="None" ViewStateMode="Enabled"> …Run Code Online (Sandbox Code Playgroud) 我正在尝试从SQL Server获取数据并在formview中使用它,但formview控件不会从数据源获取任何数据.
(数据源在页面加载时获取参数)
输出只是:"这里没什么可看的"和一张空表.
这是datasource和formview标签:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:igroup20_test2ConnectionString %>"
SelectCommand="SELECT * FROM [member] where ([id] = @idd)">
<SelectParameters>
<asp:Parameter Name="idd" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
<asp:FormView ID="FormView1" runat="server" DataSourceID="SqlDataSource1" DataKeyNames="id">
<EmptyDataTemplate>
There is nothing to see here.
</EmptyDataTemplate>
<ItemTemplate>
<table>
<tr>
<td>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("id") %>'></asp:Label>
</td>
<td>
<asp:Label ID="Label2" runat="server" Text='<%# Eval("f_name") %>'></asp:Label>
</td>
</tr>
</table>
</ItemTemplate>
</asp:FormView>
Run Code Online (Sandbox Code Playgroud)
这是我的代码背后:
protected void Page_Load(object sender, EventArgs e)
{
SqlDataSource1.SelectParameters.Add("@idd", "077763554");
FormView1.DataBind();
}
Run Code Online (Sandbox Code Playgroud) sqldatasource ×10
asp.net ×9
c# ×5
gridview ×2
data-binding ×1
formview ×1
query-string ×1
sql ×1
sql-insert ×1
sql-server ×1
vb.net ×1