小编Han*_*ank的帖子

使用MVVM从WPF中的TextBox进行正确的DataGrid搜索

我是MVVM模式的新手,对于何时使用Code Behind有点困惑.我现在有一个非常简单的表单,包括一个TextBox和一个DataGrid.我想要的是能够让DataGrid根据TextBox更改其选定的项目.

我在Code Behind中完成了这项工作,使用以下代码可以正常工作:

private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
{
    for (int i = 0; i < dataGrid1.Items.Count; i++)
    {
        string cellContent = dtReferral.Rows[i][0].ToString();
        try
        {
            if (cellContent != null && cellContent.Substring(0, textBox1.Text.Length).Equals(textBox1.Text))
            {
                object item = dataGrid1.Items[i];
                dataGrid1.SelectedItem = item;
                dataGrid1.ScrollIntoView(item);
                //row.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
                break;
            }
        }
        catch { }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我只想突出显示Datagrid中以文本框中的文本开头的项目,并允许用户按下按钮来编辑所选项目.

在Code Behind文件中有这个逻辑是否可以?或者我需要通过某种绑定来做到这一点?如果我应该通过带有绑定的视图模型执行此操作,任何方向都将受到赞赏.谢谢.

c# wpf search datagrid mvvm

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

迭代深度复制链接列表

这是一项家庭作业。将以下递归深复制方法更改为迭代等效方法。我已经很接近了,需要你的帮助来纠正它。递归实现:

public static StringNode copy(StringNode str) {
        if (str == null)
            return null;

        StringNode copyFirst = new StringNode(str.ch, null);
        copyFirst.next = copy(str.next);
        return copyFirst;
    }
Run Code Online (Sandbox Code Playgroud)

这是我想出的,迭代的等价物。该static length()方法已经实现,用于返回给定链接列表中有多少个节点。

public static StringNode copy(StringNode str) {
    if (str == null)
        return null;

    StringNode firstNode = new StringNode(str.ch ,null);
    StringNode prevNode = firstNode;
    StringNode nextNode;

    for (int i = 1; i < length(str); i++) {
        nextNode = new StringNode(str.next.ch, null);
        prevNode.next = nextNode;
        prevNode = nextNode;
    }

    return firstNode;
}
Run Code Online (Sandbox Code Playgroud)

str1问题:为了测试我的实现,我创建了一个包含字符值 …

java iteration linked-list deep-copy

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

在 sqlplus 中执行时将 plsql 错误消息重定向到日志文件

在 sqlplus 中执行时,需要一种将 PL/SQL 程序错误消息重定向到日志文件的方法。

假设 PL/SQL 程序被命名send_2012.sql并且它有以下异常块

EXCEPTION
        WHEN NO_DATA_FOUND
        THEN
                var_err := 'Data not found. ';
        WHEN OTHERS
        THEN
                var_err := 'Error in '
                        || $$plsql_unit
                        || ' | '
                        || SQLERRM
                        || ' | '
                        || 'Details: '
                        || DBMS_UTILITY.format_error_backtrace;
END;
Run Code Online (Sandbox Code Playgroud)

要在 KornShell (ksh) 脚本中运行 PL/SQL 程序,我有:

sqlplus some_username/'some_password' @some_database \
            @/some/directory/send_2012.sql \
            $parameter1 $paramenter2
Run Code Online (Sandbox Code Playgroud)

假设执行时发生错误send_2012.sql,如何将错误消息从 var_err 重定向到/some/log/directory/log_send_2012.txt

非常感激。

oracle logging ksh plsql sqlplus

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

如何在PL/SQL中使用BULK COLLECT和FORALL替换CURSOR FOR LOOP?

如何在PL/SQL中使用BULK COLLECT和FORALL替换CURSOR FOR LOOP?我想有一种更有效的方法来更新单个表中的记录.

假设我有以下PL/SQL代码:

DECLARE
   var_buy_more_shoes   inventory.buy_more_shoes%TYPE := NULL;
   var_buy_more_bananas   inventory.buy_more_bananas%TYPE := NULL;
   var_buy_more_iphone6s   inventory.buy_more_iphone6s%TYPE := NULL;

   CURSOR cur
   IS
      SELECT *
        FROM inventory
      FOR UPDATE;

BEGIN
   FOR rec IN cur
   LOOP
      IF rec.pair_of_shoes_left <= 100
      THEN
         var_buy_more_shoes := 'Yes';
      END IF;

      IF rec.weight_of_bananas_left <= 200
      THEN
         var_buy_more_bananas := 'Yes';
      END IF;

      IF rec.number_of_iphone6s_left <= 50
      THEN
         var_buy_more_iphone6s := 'Yes';
      END IF;

      UPDATE inventory a
         SET A.buy_more_shoes = var_buy_more_shoes,
             A.buy_more_bananas = var_buy_more_bananas,
             A.buy_more_iphone6s = var_buy_more_iphone6s
       WHERE CURRENT OF cur; …
Run Code Online (Sandbox Code Playgroud)

plsql for-loop forall bulk-collect

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