标签: sqldatasource

尽管sqldatasource具有值,但是为空gridview

我真的很奇怪.我已经创建了新的aspx页面,并且没有使用任何自定义逻辑对象(使用visual studio向导创建的所有内容)尝试从sqldatasource创建网格视图.

数据来自存储过程,单个参数具有默认值.当我刷新架构或单击"测试查询"时,我看到结果行和GridViews字段是核心创建的.但是当我运行页面时,没有网格视图(它只是空的 - 当我添加EmptyDataTemplate时会显示它).我添加了自定义(空)函数和DataBind,DataBinded和RowCreted事件,并且只触发了databind和datavound事件(尽管如我所写 - 存储过程及其默认参数返回行和.net可以在设计模式下读取它们)

程序中没有任何"花哨"的东西,我已经多次这样做了没有问题.我已经尝试了另一个在我们的生产环境中工作的存储过程,并且仍然具有相同的emty gridview

这是代码

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TEST.aspx.cs" Inherits="site.TEST" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1"
            AllowSorting="True" OnDataBinding="GridView1_DataBinding" OnDataBound="GridView1_DataBound"
            OnRowCreated="GridView1_RowCreated">
            <EmptyDataTemplate>
                No Data Available
            </EmptyDataTemplate>
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:myConnectionString %>"
            SelectCommand="myStoredProcedure" SelectCommandType="StoredProcedure">
            <SelectParameters>
                <asp:Parameter DefaultValue="val1" Name="par1" Type="String" />
                <asp:Parameter Name="val2" Type="Int32" />
            </SelectParameters>
        </asp:SqlDataSource>
    </div>
    </form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

和代码隐藏

using System;
using System.Collections; …
Run Code Online (Sandbox Code Playgroud)

c# asp.net gridview sqldatasource

5
推荐指数
1
解决办法
3322
查看次数

将ControlParameter添加到SqlDataSource可以防止查询和数据绑定?

我有一个调用存储过程的SqlDataSource,它工作正常.如果我添加一个<ControlParameter>标记来添加一个额外的参数,那么查询永远不会触发,并且数据绑定永远不会发生.建议?

这有效:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultDB %>"
    SelectCommand="SP_WHATEVER" SelectCommandType="StoredProcedure" 
    UpdateCommand="SP_WHATEVER2" UpdateCommandType="StoredProcedure">
    <SelectParameters>
        <asp:SessionParameter DefaultValue="" Name="UserName" SessionField="RP_Program" Type="String" />
    </SelectParameters>
    <UpdateParameters>
        <snip...>
    </UpdateParameters>
</asp:SqlDataSource>
Run Code Online (Sandbox Code Playgroud)

当我添加ControlParameter时,不再出现数据绑定:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultDB %>"
    SelectCommand="SP_WHATEVER" SelectCommandType="StoredProcedure" 
    UpdateCommand="SP_WHATEVER2" UpdateCommandType="StoredProcedure">
    <SelectParameters>
        <asp:SessionParameter DefaultValue="" Name="UserName" SessionField="RP_Program" Type="String" />
        <asp:ControlParameter Name="SprocArgName" ControlID="ddlFilter" PropertyName="SelectedValue" Type="String" />
    </SelectParameters>
    <UpdateParameters>
        <snip...>
    </UpdateParameters>
</asp:SqlDataSource>
Run Code Online (Sandbox Code Playgroud)

ControlParameter引用页面上的有效对象.还有其他建议吗?

asp.net data-binding sqldatasource controlparameter

5
推荐指数
1
解决办法
5340
查看次数

如何在SqlDataSource中指定存储过程的参数值

作为使用SqlDataSource的声明性语法的新手,我试图找出一种方法来将参数的值设置为存储过程.我有一个通过请求对象传递的Client_ID,我需要在执行SqlDataSource的存储过程之前设置Client_ID.

我有一些问题.

  1. 存储过程参数是否必须在ASPX标记中预定义,还是可以在代码隐藏中动态添加?

  2. 有没有人会有一个示例来演示带有存储过程和参数的SqlDataSource标记,以及在代码隐藏中设置该参数值?

asp.net parameters stored-procedures sqldatasource

5
推荐指数
1
解决办法
2万
查看次数

Gridview为什么所有可见行都设置为脏?

我正在使用BulkEditGridView控件,如http://roohit.com/site/showArc.php?shid=bbb62所述,它非常适合我的需求.我遇到的问题是每当我保存时,每个可见的行(我启用了分页)都会得到更新.单步执行代码,我看到grid.DirtyRows.Count等于单击保存按钮时每页的项数减1.

我找不到将行设置为脏的位置.我可以看看哪些建议?

我的代码隐藏只有这个:

using System;
using System.Web.UI.WebControls;
using System.Collections.Generic;
using System.Collections;
using System.Data.Common;

public partial class MSDS_MSDS_Admin_GridUpdate : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            gridMSDS.DataKeyNames = new String[] { "id" };
            gridMSDS.DataBind();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:这是aspx代码.

<%@ Page Language="C#" MasterPageFile="~/MSDS/MSDS.master" AutoEventWireup="true" EnableEventValidation="false" CodeFile="GridUpdate.aspx.cs" Inherits="MSDS_MSDS_Admin_GridUpdate" Title="Untitled Page" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<%@ Register Assembly="RealWorld.Grids" Namespace="RealWorld.Grids" TagPrefix="cc2" %>
<asp:Content ID="Content1" ContentPlaceHolderID="PageContent" runat="Server">
    <br />
    <asp:Button ID="btnSave" runat="server" Text="Save" Width="100%" />
    <cc2:BulkEditGridView …
Run Code Online (Sandbox Code Playgroud)

c# asp.net gridview sqldatasource

5
推荐指数
1
解决办法
1997
查看次数

ORA-01036:非法变量名/号C#(SqlDataSource)Oracle 11g

我在使用sqldatasource与Oracle数据库绑定更新表单视图值时遇到问题.

我的选择和插入事件正常工作,所有列和参数都正确.

但当我点击更新按钮时出现错误:

"ORA-01036:非法变量名称/号码"

这是我在sqldatasource中使用的更新命令(与oracle绑定):

UPDATE REPORT_PINK
SET DEMOG_HEIGHT = :DEMOG_HEIGHT
        , DEMOG_WEIGHT = :DEMOG_WEIGHT
        , DEMOG_TX_NO = :DEMOG_TX_NO
        , DEMOG_TX_PLACE = :DEMOG_TX_PLACE
        , DEMOG_TX_DATE = :DEMOG_TX_DATE
        , DEMOG_TX_TYPE = :DEMOG_TX_TYPE
        , DEMOG_RELATIONSHIP = :DEMOG_RELATIONSHIP
        , MED_HIS_CAUSE = :MED_HIS_CAUSE
        , MED_HIS_ALLERGY = :MED_HIS_ALLERGY
        , MED_HIS_BIOPSY_DATE = :MED_HIS_BIOPSY_DATE
        , MED_HIS_DIALYSIS = :MED_HIS_DIALYSIS
        , MED_HIS_DIALYSIS_DATE = :MED_HIS_DIALYSIS_DATE
        , MED_HIS_PREV_TX_FIRST = :MED_HIS_PREV_TX_FIRST
        , MED_HIS_PREV_TX_DATE_FIRST = :MED_HIS_PREV_TX_DATE_FIRST
        , MED_HIS_PREV_TX_SECOND = :MED_HIS_PREV_TX_SECOND
        , MED_HIS_PREV_TX_DATE_SECOND = :MED_HIS_PREV_TX_DATE_SECOND
        , COMOR_HEART = :COMOR_HEART
        , …
Run Code Online (Sandbox Code Playgroud)

sql asp.net oracle sqldatasource oracle11g

5
推荐指数
1
解决办法
4304
查看次数

将会话变量传递给SQLDataSource时出错

我正在尝试运行Project.aspx.当单击"查看配置文件"按钮时,Admin.apsx应该创建会话"project_id",以便两个SQLDataSource从Session("project_id")获取project_id值.

我收到这个错误:

错误

Project.aspx

<%@ Page Title="" Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="Project.aspx.vb" Inherits="Project" %>


<%@ Register assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" namespace="System.Web.UI.DataVisualization.Charting" tagprefix="asp" %>



<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <div id="project-image"><asp:Image ID="Image1" runat="server" Height="124px" Width="93px" />
        <asp:FormView ID="frmViewProject" runat="server" DataKeyNames="project_id" DataSourceID="SqlDataSource1" HorizontalAlign="Justify">
            <EditItemTemplate>
                project_id:
                <asp:Label ID="project_idLabel1" runat="server" Text='<%# Eval("project_id") %>' />
                <br />
                project_type:
                <asp:TextBox ID="project_typeTextBox" runat="server" Text='<%# Bind("project_type") %>' />
                <br />
                project_start:
                <asp:TextBox ID="project_startTextBox" runat="server" Text='<%# Bind("project_start") %>' />
                <br />
                project_finish:
                <asp:TextBox ID="project_finishTextBox" runat="server" Text='<%# Bind("project_finish") %>' />
                <br …
Run Code Online (Sandbox Code Playgroud)

vb.net asp.net session sqldatasource sql-server-2012

5
推荐指数
1
解决办法
722
查看次数

如果使用自定义DataSource,如何对ASP.NET GridView中的列进行排序?

当我使用自定义SqlDataSource时,我无法使用GridView使用户能够对数据列进行排序.

我有一个GridView,其中HTML中引用它的代码是最小的:

<asp:GridView id="grid" runat="server" AutoGenerateColumns="False" AllowSorting="True">
</asp:GridView>
Run Code Online (Sandbox Code Playgroud)

在代码隐藏中,我附加了一个动态创建的SqlDataSource(它包含的列并不总是相同,因此用于创建它的SQL是在运行时构造的).例如:

我设置了专栏......

BoundField column = new BoundField();
column.DataField = columnName;
column.HeaderText = "Heading";
column.SortExpression = columnName;

grid.Columns.Add(column);
Run Code Online (Sandbox Code Playgroud)

数据源......

SqlDataSource dataSource = new SqlDataSource(
    "System.Data.SqlClient",
    connectionString, 
    generatedSelectCommand);
Run Code Online (Sandbox Code Playgroud)

那么gridview ......

grid.DataSource = dataSource;
grid.DataKeyNames = mylistOfKeys;
grid.DataBind();
Run Code Online (Sandbox Code Playgroud)

当我希望它对列数据进行排序时,当用户点击列标题时,没有任何反应.任何想法,我缺少什么?

如果有一个更好的方式这样做也会有所帮助,因为这看起来很混乱!

c# asp.net gridview sqldatasource

4
推荐指数
2
解决办法
3万
查看次数

在运行时更改SqlDataSource.SelectCommand会破坏分页

我有一个GridView绑定到SqlDataSource一个默认的SelectCommand定义是这样的:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" DataSourceMode="DataSet"
      ConnectionString="<%$ ConnectionStrings:MyConn %>" 
      ProviderName="MySql.Data.MySqlClient" 
      SelectCommand="select * from blah blah" />
Run Code Online (Sandbox Code Playgroud)

有些情况下我必须在运行时动态更改此查询,因此我执行以下操作:

SqlDataSource1.SelectCommand = sql; // 'sql' is the new query
GridView1.PageIndex = 0;
GridView1.EditIndex = -1;
GridView1.SelectedIndex = -1;
GridView1.DataBind();
updatePanel.Update();
Run Code Online (Sandbox Code Playgroud)

实际上这很好用,但是当我单击分页控件时,结果集默认返回到中SelectCommand定义的SqlDataSource1.

有什么方法吗?

谢谢,马克

asp.net pagination gridview sqldatasource selectcommand

4
推荐指数
1
解决办法
3万
查看次数

在WebForm中跳过SqlDataSource中sql参数的设置值

我正在asp.net中创建一个WebForm,我想用asp中的数据显示gridview:SqlDataSource
当我尝试跳过(传递null)某些参数的值时,我的问题变成了.

这是我的代码的一些片段

在aspx文件中sqldatasource看起来像

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:ApplicationServices %>" 
        SelectCommand="art_bat_art" SelectCommandType="StoredProcedure">
        <SelectParameters>
            <asp:Parameter Name="art_naz" DefaultValue="HLA"  ConvertEmptyStringToNull="true" Type="String" />
            <asp:Parameter Name="art_sifra"     DbType="String"  Direction="Input"/>
            <asp:Parameter Name="vrsta_id" DefaultValue="3"   ConvertEmptyStringToNull="true" Type="Int32" />     
            <asp:Parameter Name="podvrsta_id" DefaultValue="13"   ConvertEmptyStringToNull="true" 
                Type="Int32"  />
            <asp:Parameter Name="podgrupa2"  DefaultValue="1365"   ConvertEmptyStringToNull="true" Type="Int32"      /> 
            <asp:Parameter Name="podosobine"   DefaultValue="1:9241"  ConvertEmptyStringToNull="true" 
                Type="String"  />
            <asp:Parameter Name="podosobineOR" DefaultValue="true"   ConvertEmptyStringToNull="true" 
                Type="Boolean"  />
        </SelectParameters>
Run Code Online (Sandbox Code Playgroud)

我的网格看起来像这样:

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        DataKeyNames="id" DataSourceID="SqlDataSource1">
Run Code Online (Sandbox Code Playgroud)

代码后面出现问题我的存储过程的一个参数是可选的,如果我在SQL中将它作为null传递,那么无论如何都会执行存储过程.

我试图跳过并传递该参数如下

public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {


        }
        protected void …
Run Code Online (Sandbox Code Playgroud)

c# asp.net gridview sqldatasource

4
推荐指数
1
解决办法
4466
查看次数

必须声明标量变量"@LoggedInUser".尝试将参数添加到SqlDataSource时出错

我正在使用SqlDataSource根据登录用户显示记录,

<asp:SqlDataSource ID="ModifyCustomerDataSource" SelectCommand="SELECT cApplicationNo,cFirstName,cMiddleName,cLastName,nTelNo,nMobileNo,cPanGirNo from Data_Customer_Log where cAddedBy=@LoggedInUser" ConnectionString="<%$ ConnectionStrings:CwizDataConnectionString %>"   runat="server"></asp:SqlDataSource>
Run Code Online (Sandbox Code Playgroud)

在页面加载中,我添加了如下参数

protected void Page_Load(object sender, EventArgs e)
        {
            string user = HttpContext.Current.User.Identity.Name;
            ModifyCustomerDataSource.SelectParameters.Clear();
            ModifyCustomerDataSource.SelectParameters.Add("@LoggedInUser", user.Trim());
        }
Run Code Online (Sandbox Code Playgroud)

但它给了我错误

Must declare the scalar variable "@LoggedInUser".
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Data.SqlClient.SqlException: Must declare the scalar variable "@LoggedInUser".
Run Code Online (Sandbox Code Playgroud)

任何人都可以指出我出错的地方.谢谢

c# sqldatasource

4
推荐指数
1
解决办法
6465
查看次数