标签: sqldatasource

如何使用SqlDataSource处理异常

我有一个SqlDataSource,它向我的GridView提供数据.多数民众赞成我在我的表格上使用,因此我根本没有任何代码.但在某些地方我需要一个TRY CATCH块以防万一我的连接丢失了.我必须在哪里放置什么代码?

如果我收到错误,我希望我的lblMessage文本为"无连接".

编辑

我的Machine.aspx中的GridView

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" 
    Height="209px" PageSize="7" Width="331px" AllowSorting="True" 
                DataSourceID="SqlDataSource1">
    <Columns>
        <asp:BoundField DataField="Total" HeaderText="Total" ReadOnly="True" 
            SortExpression="Total" DataFormatString="{0:R#,###,###}" >
            <HeaderStyle HorizontalAlign="Left" />
        </asp:BoundField>
        <asp:BoundField DataField="b134_rmcid" HeaderText="Machine"  ReadOnly="True" 
            SortExpression="b134_rmcid" >
            <HeaderStyle HorizontalAlign="Left" />
        </asp:BoundField>
        <asp:BoundField DataField="b134_recdate" DataFormatString="{0:d/MM/yyyy}" 
            HeaderText="Date" ReadOnly="True" SortExpression="b134_recdate" >
            <HeaderStyle HorizontalAlign="Left" />
        </asp:BoundField>
    </Columns>
</asp:GridView>
Run Code Online (Sandbox Code Playgroud)

我的连接就在我的Machine.aspx中的Gridview下

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ODBC_ConnectionString %>" 
    ProviderName="<%$ ConnectionStrings:ODBC_ConnectionString.ProviderName %>" 

    SelectCommand="SELECT SUM(b134_nettpay) AS Total, b134_rmcid, b134_recdate FROM B134HRE" 
    onselected="SqlDataSource1_Selected">

</asp:SqlDataSource>
Run Code Online (Sandbox Code Playgroud)

我的Code.aspx.cs中的Code Behind文件中的代码

protected void Page_Load(object sender, EventArgs e)
{
    lblError.Text …
Run Code Online (Sandbox Code Playgroud)

c# vb.net asp.net datagridview sqldatasource

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

ASP.Net:动态创建的下拉列表和数据源

我有大约10个下拉列表控件被填充.我想以编程方式创建它们,而不是复制/粘贴和修改每个字段.可以这样做吗?

这是他们中的一个.我想以编程方式添加10个下拉列表控件及其各自的SqlDataSource控件.

   <asp:SqlDataSource ID = "ddlDAGender" runat=server
    ConnectionString="<%$ ConnectionStrings:test1ConnectionString %>" 
    SelectCommand = "select GenderID,Gender from mylookupGender"
    >
    </asp:SqlDataSource>


 <asp:Label ID="Label3" runat="server" Text="Gender"></asp:Label>

        <asp:DropDownList ID="ddlGender" runat="server" 
                DataSourceid="ddlDAGender"
                DataTextField="Gender" DataValueField="GenderID"

    >

 </asp:DropDownList>
Run Code Online (Sandbox Code Playgroud)

asp.net sqldatasource dynamic-controls drop-down-menu

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

SQLDatasource参数

如何在后面的代码中为sqlDatasource设置sql参数?我这样想:

int id=1;
SqlDataSource1.SelectCommand = "SELECT * FROM categ WHERE id=@id";
SqlDataSourceArticole.SelectParameters.Add("@id", id);
// and also like this:
SqlDataSourceArticole.SelectParameters.Add("id", id);
Run Code Online (Sandbox Code Playgroud)

但它不起作用?我究竟做错了什么?

c# asp.net sqldatasource

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

通过适当的列(GridField)对gridView进行排序

我在gridView中排序列时遇到问题.我想只选择列中名称相等的那些行,例如"已完成"

我的gridView包含很少的BoundField和TamplateFields.当我想通过适当的BoundField排序时,我将适当的字符串放到属性FilterExpression中.例如:

GridView中的字段: <asp:BoundField DataField="identifier" HeaderText="Case number" SortExpression="identifier" />

所以我订了 FilterExpression = "[identifier] LIKE '%" + txtCaseNumber.Text + "%'"

其中identifier是BoundField中的DataField,在这种情况下,一切正常.但是当我想从名称与TempateField中的Fininish相同的列中选择适当的行时,我不知道该怎么做.TemplateField的Exaple看起来像这样:

<asp:TemplateField HeaderText="Status" SortExpression="Status">
                    <ItemTemplate>
                        <asp:Label ID="lblStatus" runat="server" Text='<%# Utils.ConvertToProcessStatus((int)Eval("status"))%>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)

如果有人知道我怎么做?

感谢帮助.


没关系,但我忘了提到我有自己的用户控制器(ucCaseFilter),它由DropDownList组成,我从中选择状态.例如:Failed,InProgress,Finish ...在这个控件里面我创建公共属性Filter我想分配字符串值,它将选择适当的列并对它们进行排序.

Filter = "[???] = '" + ddlCaseStatus.SelectedValue + "'"; 
Run Code Online (Sandbox Code Playgroud)

然后在gridView中使用它:

FilterExpression = ucCaseFilter.Filter;
Run Code Online (Sandbox Code Playgroud)

我不知道如何得到列名称或其他方法,让我按"状态"列排序.

如果我不理解以前的答案,它指的是正确的解决方案

asp.net gridview sqldatasource

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

绑定到详细信息视图控件中的复选框时,将DBNull转换为布尔值

这有点傻但我有一个DetailsView,它使用sqlDataSource绑定到我的数据库中的记录.我的问题是我绑定的字段是一个位字段,(i,e 1或0),目前允许空值.我意识到这需要改变,但我还需要能够在GUI端处理DBNulls,以便应用程序自动知道如果值为DBNull,则将复选框的Checked属性设置为"false".目前我的模板字段看起来像这样.

 </asp:TemplateField>
   <asp:TemplateField HeaderText="Car:" HeaderStyle-Width="15%" ItemStyle-Width="85%">
  <ItemTemplate>
    <asp:Label ID="lblIsCar" runat="server" Text='<%#  Eval("isCar") %>' />
  </ItemTemplate>
  <EditItemTemplate>
    <asp:CheckBox ID="ckIsCar" runat="server"  Checked='<%#  Convert.ToBoolean(Eval("isCar"))%>' />
  </EditItemTemplate>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)

在View模式下一切正常,但是当我单击详细信息视图控件上的Edit链接时,我收到以下错误:

无法将对象从DBNull强制转换为其他类型.

有什么建议?

更新:

我需要通过Bind()而不是Eval()来使用2路绑定,因为详细信息视图会对所选记录执行更新.如果我在绑定时使用Convert.ToBoolean(),则会抛出异常.我最终可能会使用CheckboxField.人们会认为有一种简单的方法可以解决这个问题,但我找不到它是不吉利的.

c# asp.net dbnull detailsview sqldatasource

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

如何将asp.net NULL值转换为""(空字符串)

我有一种情况,我使用SQLDataSource的详细信息视图来更新SQL Server数据库中的记录.

我的问题是未完成的文本字段在数据库中转换为NULL.这会导致网站使用无法处理NULL DB值的第三方Web服务.

有没有办法,如果文本字段留空,当更新或插入发生时,数据转换为""(空字符串)而不是NULL值?

.net sql-server asp.net sqldatasource visual-studio

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

C#:SQL FilterExpression - 缺少操作数异常

我正在关注此处列出的可搜索网格视图代码.我在使用时遇到了麻烦FilterExpression.我得到了例外:

'Name'运算符后缺少操作数...当异常发生时,FilterExpression ="WHERE Name like'spencer%'"

以下代码中发生异常:

protected void BindSGVData()
        {
            //hfSearchText has the search string returned from the grid.
            if (hfSearchText.Value != "")
            {
                RidesSQL.FilterExpression = " WHERE " + hfSearchText.Value; //EXCEPTION HERE!
            }
            DataView dv = (DataView)RidesSQL.Select(new DataSourceSelectArguments());
            //hfSort has the sort string returned from the grid.
            if (hfSort.Value != "")
            {
                dv.Sort = hfSort.Value;
            }

            RideSGV.DataSource = dv;
            try
            {
                RideSGV.DataBind();
            }
            catch (Exception exp)
            {
                //If databinding threw exception bcoz current page index …
Run Code Online (Sandbox Code Playgroud)

c# sql asp.net search sqldatasource

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

如何调试使用内联sqldatasource时传递的参数?

假设我在.aspx页面上有某种数据网格或转发器,我的数据源是内联定义的:

<asp:SqlDataSource ID="ds1" runat="server" ConnectionString="..."
SelectCommand="some_proc" ...>
  <SelectParameters>
             <asp:ControlParameter ControlID="ddlYear" Name="Year" .. />
   </SelectParameters>
</asp:SqlDataSource>
Run Code Online (Sandbox Code Playgroud)

如何调试我的代码,以便我可以确切地看到它绑定到网格时的值是什么?

c# asp.net sqldatasource

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

在SelectCommand for SqlDataSource中使用选定的下拉值

我想在SqlDataSource SelectCommand中使用下拉列表的选定值.

                <asp:DropDownList ID="ddlSelectRole" runat="server" ClientIDMode="Static">
                    <asp:ListItem></asp:ListItem>
                    <asp:ListItem>Client</asp:ListItem>
                    <asp:ListItem>Programming</asp:ListItem>
                    <asp:ListItem>Guest</asp:ListItem>
                </asp:DropDownList>
Run Code Online (Sandbox Code Playgroud)

目前:

<asp:SqlDataSource ID="dsourceProgEmails" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ProjectConnectionString %>" 
    SelectCommand="SELECT  [Email] + ',' AS [text()] FROM [SiteUsers] WHERE [Role] = 'Programming' FOR XML PATH ('')">
</asp:SqlDataSource>
Run Code Online (Sandbox Code Playgroud)

我想的是:

<asp:SqlDataSource ID="dsourceProgEmails" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ProjectConnectionString %>" 
    SelectCommand="SELECT  [Email] + ',' AS [text()] FROM [SiteUsers] WHERE [Role] = '" + ddlSelectRole.SelectedValue + "' FOR XML PATH ('')">
</asp:SqlDataSource>
Run Code Online (Sandbox Code Playgroud)

代码隐藏是C#.

asp.net sqldatasource

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

总行数SqlDataSource GridView

所以我有一个GridView设置为SqlDataSource.分页已启用,我有一个下拉菜单,可以更改每页显示的行数.我能够在单个页面中显示总行数,但我还想显示总行数.(像这样:"显示315的1 - 25").

所以,我的问题是:

1)如何获取整个DataSource的总行数?(不只是GridView)我的代码OnSelectedData方法不起作用并返回零.

2)如何让每个页面的数字显示不同?例如,在第二页上,它需要说"显示26 - 50 of 315"

这是我的代码(C#):

public partial class UserControls_BloombergAllUsersControl : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{       
}
int gridViewTotalRowCount;
protected void onSelectedData(object sender, SqlDataSourceStatusEventArgs e)
{
    gridViewTotalRowCount = e.AffectedRows;
}
protected void GridView1_DataBound(object sender, EventArgs e)
{
    int pageRowsCount = GridView1.Rows.Count;

    Total1.Text = "Showing 1 - " + pageRowsCount.ToString() + " of " + gridViewTotalRowCount.ToString();
}
private void BindGridView1()
{
    try
    {
        this.GridView1.DataBind();

        if (Convert.ToInt32(DropDownList1.SelectedValue) != null)
            GridView1.PageSize = Convert.ToInt32(DropDownList1.SelectedValue);
    } …
Run Code Online (Sandbox Code Playgroud)

c# asp.net gridview sqldatasource rowcount

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