我有一个小疑问,如何管理以下情况.在数据库表中,我将相关数据保存在不同的列中,最后我将精确的顺序保存在名为position的列中.此表绑定到网格.现在我正在实现将更改行的位置的功能,但我还需要更新数据库.我问的是什么是最佳实践或最方便的方法来实现这一目标?
建议是值得欢迎的.
例
姓名职位
abc 1
def 2
ghj 3
现在我点击按钮,我得到以下内容
姓名职位
def 1
abc 2
ghj 3
我希望我已经解释过了自己!
根据评论,这是一个真实的例子:
具有3列ID1,ID2,POSITION
ID1和ID2的TABLE1 是FK,并且该表具有基于ID1和ID2的PK
当我选择要显示的数据时,我使用以下查询SELECT NAME,ETC FROM TABLE2 INNER JOIN TABLE1 ON ID1 = ID1 ID2 = 511按位置排序现在我需要改变位置上的两个元素,因此该行中TABLE1例如311,511,5需要成为311,511,4,那是433,511,4需要该行成为433,511,5.相反的.
我希望这有助于澄清我的问题.
干杯!
我正在尝试构建一个DataGrid-不是DataGridView,因为它似乎在Visual Studio 2010中不可用。
我想动态添加行(我想我可以做到),但是为了显示结果,我需要将数据分配给DataGrid,所有示例都说我应该使用DataSource,但Visual Studio坚持认为这不可用。为了编码,我发现其他地方是这样的。
private void BindToDataView(System.Windows.Controls.DataGrid myGrid)
{
// Create a DataView using the DataTable.
DataTable myTable = new DataTable("Suppliers");
// Insert code to create and populate columns.
DataView myDataView = new DataView(myTable);
myGrid.DataSource = myDataView;
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我正在使用C#,.net 3.5和Visual Studio 2008.
在阅读了一些关于何时必须处理元素的内容后,我有点困惑.以下Paint事件处理程序是否可以,或者它是内存泄漏?
private void ProgressBar_Paint(object sender, PaintEventArgs e) {
Graphics graphics = e.Graphics;
string rightText = "rightext";
string leftText = "lefttext";;
string textToDraw = rightText + leftText;
graphics.DrawString(textToDraw, progressBar.Font,
new SolidBrush(progressBar.ForeColor), 10, 30);
}
Run Code Online (Sandbox Code Playgroud)
这会好吗?
private void ProgressBar_Paint(object sender, PaintEventArgs e) {
Graphics graphics = e.Graphics;
string rightText = "rightext";
string leftText = "lefttext";;
string textToDraw = rightText + leftText;
using (SolidBrush solidBrush = new SolidBrush(progressBar.ForeColor)) {
graphics.DrawString(textToDraw, progressBar.Font, solidBrush, 18, 20);
}
}
Run Code Online (Sandbox Code Playgroud) 我们正在使用azure云服务来发布我们的应用程序.对于重大更改,我们将通过创建和上传包进行发布,但是对于较小的更改,我们通过使用远程计算机将相应的dll移动到实例.
我们将dll移动到站点根目录下的文件夹中.
我们的问题是,两天前我们注意到通过增量(即通过复制dll)所做的更改已经丢失,我们保存在桌面上的文件夹也丢失了.
最近,我一直在进行类型绑定的测试,该绑定实现INotifyPropertyChanged了工作线程抛出跨线程问题并更新了属性。
这是示例代码:
public class MyViewModel : INotifyPropertyChanged
{
private string _name;
public string Name
{
get { return _name; }
set
{
if (_name != value)
{
_name = value;
OnPropertyChanged("Name");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler hanlder = PropertyChanged;
if(hanlder != null)
hanlder(this, new PropertyChangedEventArgs(propertyName));
}
}
Run Code Online (Sandbox Code Playgroud)
上面的viewmodel已与Windows窗体中的标签文本绑定,并从工作线程更新标签值。
从辅助线程更新label1文本会导致跨线程问题:
public partial class MainForm : Form
{
private MyViewModel _myViewModel = new MyViewModel();
public MainForm()
{
InitializeComponent();
Btn1.Click += Btn1_Click; …Run Code Online (Sandbox Code Playgroud) 我正在尝试找到此代码的时间复杂度。
for (int i = 0; i <= n - 1; i++)
for (int j = i + 1; j <= n - 1; j++)
for (int k = j + 1; k <= n - 1; k++)
Run Code Online (Sandbox Code Playgroud)
我的尝试:我们可以将这个循环写成以下形式:
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
for (int k = 1; k <= n; k++)
Run Code Online (Sandbox Code Playgroud)
现在这个循环的大哦是 O(n^5)。我是正确的还是做错了什么?
如何执行多个策略(或将它们合并为一个策略)?
例如我有:
var policy1 = Policy.Handle< DivideByZeroException >().WaitAndRetry(5));
var policy2 = Policy.Handle< StackOverflowException >().RetryForever();
Run Code Online (Sandbox Code Playgroud)
如何同时将它们应用于一种方法?
我最近一直在学习异步编程,我想我已经掌握了它.异步编程很简单,只允许我们的程序进行多任务处理.
混乱配备await和async编程,它似乎混淆我多一点,可能有人帮助回答一些我的顾虑?
我没有看到async关键字那么多,只是你想要一种方法让Visual Studio知道该方法可能await是某种东西,并允许它来警告你.如果它有一些其他特殊含义实际影响某些东西,有人可以解释一下吗?
移动到await,跟一个朋友,我被告知我有1周重大的事情错了之后,await不会阻止当前的方法,它只是执行留在该方法中的代码,并不会在自己时代的异步操作.
现在,我不确定这种情况经常发生,但是让我们说你有这样的代码.
Console.WriteLine("Started checking a players data.");
var player = await GetPlayerAsync();
foreach (var uPlayer in Players.Values) {
uPlayer.SendMessage("Checking another players data");
}
if (player.Username == "SomeUsername") {
ExecuteSomeOperation();
}
Console.WriteLine("Finished checking a players data.");
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我运行了一些异步代码GetPlayerAsync,如果我们深入到范围并且我们需要访问播放器会发生什么,但它还没有返回播放器呢?
如果它没有阻止该方法,它如何知道该玩家不是null,它是否做了一些魔法并等待我们如果我们到达那种情况,或者我们只是禁止自己编写这种方法并处理它我们自己.
我试图使用HtmlAgilityPack.NETCore获取网页将网页加载到程序中。问题在于调试直接从第一个Using语句跳出,因此根本不调用代码和第二个using。没有异常或其他东西被抛出。程序以退出代码0结尾。我在做什么错?我正在使用.net Core 2.2
HttpClient client = new HttpClient();
List<string> htmlContent = new List<string>();
using (var response = await client.GetAsync(URL))
{
using (var content = response.Content)
{
var result = await content.ReadAsStringAsync();
var document = new HtmlDocument();
document.LoadHtml(result);
foreach (HtmlNode node in document.DocumentNode.SelectNodes("//text()"))
{
htmlContent.Add(node.InnerText);
}
}
}
Run Code Online (Sandbox Code Playgroud) c# ×7
algorithm ×3
.net ×2
winforms ×2
.net-core ×1
async-await ×1
asynchronous ×1
azure ×1
big-o ×1
c#-4.0 ×1
datagrid ×1
datasource ×1
dispose ×1
gdi+ ×1
performance ×1
polly ×1
sql ×1
task ×1
wpf ×1