小编Jum*_*zza的帖子

在C#中,如何从字符串创建TextReader对象(无需写入磁盘)

我正在使用快速CSV阅读器将一些粘贴的文本解析为网页.Fast CSV阅读器需要一个TextReader对象,而我所拥有的只是一个字符串.在运行中将字符串转换为TextReader对象的最佳方法是什么?

谢谢!

更新 - 示例代码 - 在原始示例中,新的StreamReader正在查找名为"data.csv"的文件.我希望通过TextBox_StartData.Text提供它.

使用下面的代码不会编译.

        TextReader sr = new StringReader(TextBox_StartData.Text);
        using (CsvReader csv = new CsvReader(new StreamReader(sr), true))
        {
            DetailsView1.DataSource = csv;
            DetailsView1.DataBind();
        }
Run Code Online (Sandbox Code Playgroud)

new StreamReader(sr)告诉我它有一些无效的参数.有任何想法吗?

作为替代方法,我试过这个:

        TextReader sr = new StreamReader(TextBox_StartData.Text);
        using (CsvReader csv = new CsvReader(sr, true))
        {
            DetailsView1.DataSource = csv;
            DetailsView1.DataBind();
        }
Run Code Online (Sandbox Code Playgroud)

但我得到一个Illegal characters in path Error.这里是TextBox_StartData.Text中的字符串示例:

Fname\tLname\tEmail\nClaude\tCuriel\tClaude.Curiel@email.com\nAntoinette\tCalixte\tAntoinette.Calixte@email.com\nCathey\tPeden\tCathey.Peden@email.com\n
Run Code Online (Sandbox Code Playgroud)

如果这是正确的方法,任何想法?再次感谢你的帮助!

c# csv textreader csvhelper

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

即使测试失败,Teamcity也会运行构建步骤

我遇到了问题Teamcity,即使先前的步骤不成功,它也会继续运行构建步骤.

我的Build配置的最后一步是部署我的站点,如果我的任何测试失败,我不希望它这样做.

每个构建步骤都设置为仅在所有先前步骤都成功时执行.

在Build Failure Conditions选项卡中,我在Fail build下检查了以下选项:

-build process exit code is not zero
-at least one test failed
-an out-of-memory or crash is detected (Java only)
Run Code Online (Sandbox Code Playgroud)

这不起作用 - 即使测试失败,TeamCity部署我的网站,为什么?

我甚至尝试添加一个额外的构建失败条件,它将在构建日志中查找特定文本(即"Test Run Failed.")

在概述页面中查看已完成的测试时,您可以看到针对最新版本的错误消息:

"测试运行失败." 文本出现在构建日志中

但无论如何它仍然会部署它.

有谁知道如何解决这一问题?看来,问题已经运行了很长一段时间,在这里.

显然有一个解决方法:

到目前为止,我们不认为此功能非常重要,因为有一个明显的解决方法:脚本可以检查必要条件,并且不会生成TeamCity中配置的工件.

例如,脚本可以将工件从临时目录移动到TeamCity中指定的目录,作为完成之前的发布工件,以防构建操作成功.

但对于我究竟该如何做到这一点并不清楚,并且听起来也不是最好的解决方案.任何帮助赞赏.

编辑:我还能够解决快照依赖的问题,我将有一个独立的"部署"版本,它依赖于测试版本,现在如果测试失败,它就不会运行.

对于设置依赖性非常有用.

teamcity mstest build

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

查询编辑器窗口的SSMS更改连接

通常,当我想在SQL Server Management Studio中更改查询编辑器窗口的连接时,我可以从顶部的菜单中选择一个新连接 - 查询>连接>更改连接.

但是,当我处理具有分析服务连接的多维数据集 - 然后打开已保存的SQL脚本(例如基础SQL视图)时,可用数据库组合框为空白,并且"更改连接"和该菜单中的其他3个选项(连接,断开连接,断开所有查询)都是灰色的.

我发现能够运行保存的SQL脚本的唯一解决方法是从我想要在对象资源管理器中访问的SQL数据库中打开"新查询",并将我的脚本复制到其中,或者重新打开脚本 - 现在正常打开,使用新查询的数据库.

它似乎将最后一个查询编辑器窗口的数据库连接作为任何新查询的默认连接 - 当您的上一个"查询"正在浏览多维数据集时,它会中断吗?有没有人有一个解决方案可以正确地取消灰色"更改连接"选项?

我正在使用SQL Server 2008 R2,并通过文件>打开>文件菜单打开保存的SQL脚本

ssas ssms sql-server-2008

18
推荐指数
2
解决办法
7246
查看次数

更新用户声明未生效.为什么?

我正在使用ASP.NET MVC 5.1与Owin和声明身份验证.

用户更改其电子邮件后,我需要更新用户声明,所以我尝试在控制器中:

  ClaimsIdentity identity = (ClaimsIdentity)User.Identity;
  Claim claim = identity.FindFirst(ClaimTypes.Email);
  identity.RemoveClaim(claim);
  identity.AddClaim(new Claim(ClaimTypes.Email, newEmail));

  IOwinContext context = new OwinContext();

  context.Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie);
  context.Authentication.SignIn(identity);
Run Code Online (Sandbox Code Playgroud)

索赔已更改,但当我刷新页面时,电子邮件声明再次原始...

似乎cookie没有更新.知道我做错了什么吗?

是否有可能从身份中获取"IsPersistent"的值,所以当我再次签名时,我将获得相同的值?

谢谢,

米格尔

asp.net-mvc asp.net-identity

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

如何在SQLite中检查数据库是否存在C#

我目前正在使用C#编写应用程序并使用sqlite作为嵌入式数据库.我有我的应用程序在启动时创建一个新的数据库,但我如何让它检查数据库是否存在?如果确实存在,我如何使用它,如果不存在如何创建新数据库?

这是我到目前为止:

private void MainWindow_Loaded(object sender, EventArgs e)
{
    SQLiteConnection sqlite_conn;
    SQLiteCommand sqlite_cmd;
    bool newdb = false;
    if (newdb == true)
    {
        sqlite_conn = new SQLiteConnection("DataSource=database.db;Version=3;");
        sqlite_conn.Open();
        MessageBox.Show("31");
    }
    else
    {
        sqlite_conn = new SQLiteConnection("Data Source=database.db;Version=3;New=True;Compress=True;");
        sqlite_conn.Open();    
        sqlite_cmd = sqlite_conn.CreateCommand();    
        sqlite_cmd.CommandText = "CREATE TABLE Client (id integer primary key, Title  varchar(100),Name  varchar(100),Surname  varchar(100),Dateofbirth DateTime , Propertyname varchar(100),Moveindate DateTime,Relationship varchar(100),Spouse  varchar(100),Gender  varchar(100), spTitle  varchar(100),SpouseName  varchar(100),SpouseSurname  varchar(100),spDateofbirth DateTime ,spRelationship varchar(100),spSpouse  varchar(100),spGender  varchar(100));";
        sqlite_cmd.ExecuteNonQuery();
    }    
    sqlite_conn.Close();
    MessageBox.Show("dasdas");    
}
Run Code Online (Sandbox Code Playgroud)

c# sqlite

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

将AJAX ModalPopupExtender定位在屏幕问题的中心

当设置PopupDragHandleControlID属性时,我在将ModalPopupExtender定位在屏幕中心时遇到问题(没有此属性,它可以正常工作).

ModalPopupExtender未位于屏幕中央.我认为导致问题的原因是页面的CSS布局导致当我禁用它时,弹出窗口位于屏幕中央(我不明白为什么页面的css仅在设置了PopupDragHandleControlID属性时影响ModalPopupExtender)

这页纸:

<!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>
    <link href="layout.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <div id="header">
    </div>

     <div id="container">
       <div id="center" class="column">                    

          <div id="centercolcontent" class="centercolcontent">    
            <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>


        <asp:UpdatePanel ID="UpdatePanel1" runat="server" >
            <ContentTemplate>
                <asp:Button ID="btnShowPopup" runat="server" Text="Open" />   
                <asp:Panel ID="pnlUploader" runat="server" CssClass="pnlUploader"   style="display: none;">
                    <cc1:ModalPopupExtender ID="mdlPopup1" runat="server" TargetControlID="btnShowPopup"
                                PopupControlID="pnlUploader" CancelControlID="btnCancel"
                                BackgroundCssClass="modalBackground"
                                PopupDragHandleControlID="pnlUploader" RepositionMode="RepositionOnWindowResize"   />
                    <div id="pnlDragMe" class="pnlDragMe">
                        Image Uploader
                     </div>     

                     <div class="upload" id="upload">             
                         <div id="status" …
Run Code Online (Sandbox Code Playgroud)

css asp.net ajax modalpopupextender ajaxcontroltoolkit

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

如何在1行代码中向c#DataTable添加新行?

是否可以使用1行代码在c#中的数据表中添加新行?我只是为了测试而愚弄一些数据,而且写这样的东西似乎很慢:

DataTable dt= new DataTable("results");
DataRow dr1 = dt.NewRow();
dr1[0] = "Sydney";
dt.Rows.Add(dr1);
DataRow dr2 = dt.NewRow();
dr2[0] = "Perth";
dt.Rows.Add(dr2);
DataRow dr3 = dt.NewRow();
dr3[0] = "Darwin";
dt.Rows.Add(dr3);
Run Code Online (Sandbox Code Playgroud)

我假设你可以做类似下面的代码,但我找不到正确的语法.

dt.Rows.Add(dt.NewRow()[0]{"Sydney"});
dt.Rows.Add(dt.NewRow()[0]{"Perth"});
dt.Rows.Add(dt.NewRow()[0]{"Darwin"});
Run Code Online (Sandbox Code Playgroud)

是的,我知道在我写这个问题的时候,我可以完成编码很长的路而不是拖延它:)

谢谢!

c# datatable

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

在循环中获取每100个值

有没有办法让这个更清洁,而不是像我在这里所做的那样使用tempvalue?


更新代码有一个逻辑错误,并没有显示我正在做什么.这就是我正在做的事情:

var loopTempValue = noOfPackets / 100;
for(i=0; i < noOfPackets; i++)
{   
    \\DoStuff

    if (i == loopTempValue)
    {
         loopTempValue = loopTempValue + (noOfPackets / 100);
         UploadBackGroundWorker.ReportProgress(pross);
    }
}
Run Code Online (Sandbox Code Playgroud)

更新决赛

这就是它在反馈之后的固定方式.

if (i % (noOfPackets / 100) == 0 && i != 0)
{
     UploadBackGroundWorker.ReportProgress(pross);
}
Run Code Online (Sandbox Code Playgroud)

c# syntax for-loop

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

通过viewmodel将scrollviewer滚动到顶部

我正在使用带有MVVM模式的ScrollViewer,并且ScrollViewer包含了一个项目列表,例如

<ScrollViewer>
  <ListView>
    <ListView.View>
        <GridView>
            <GridViewColumn
                Header = "Name"
                DisplayMemberBinding="{Binding Path=Name}"
            />              
        </GridView>
    </ListView.View>
  </ListView>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)

列表视图的项目绑定到viewmodel中的对象集合.我希望每当从集合中添加或删除项目时,scrollviewer都会滚动到顶部.
我需要viewmodel来触发事件,而不是ScrollToTop()在视图的代码隐藏中使用该方法.

wpf scroll mvvm

9
推荐指数
2
解决办法
4188
查看次数

在DoDragDrop之后触摸事件不起作用

我正在开发支持基本触摸事件(非操作)的WPF应用程序.我正在使用Gong DragDrop来处理拖放操作.我遇到的问题描述如下:

在[Preview] Drop事件中(使用Gong DragDrop),我显示一个对话框并提示用户确认放置位置,用户必须单击"是"按钮才能完成放置或"否"按钮取消下降.我可以使用鼠标点击这两个按钮,但触摸事件没有运气.

我使用spy ++来监视从窗口派生的提示对话框的鼠标事件.记录了鼠标事件和触摸事件.

为什么鼠标事件工作和触摸没有?有办法触摸工作吗?

wpf drag-and-drop mvvm

9
推荐指数
1
解决办法
926
查看次数