我有一个Silverlight 4应用程序,在表单底部附近有一个ComboBox.Dropdown中可以有大约30到100个项目.
当我第一次打开ComboBox时,没有SelectedItem,Dropdown向上打开,它可以看到大约23个条目; 只要我没有选择项目,每次重新打开Dropdown时它都会继续这种行为.一旦我选择了一个项目,每次我打开ComboBox后,它总是向下打开Dropdown,并且只显示3个条目.
我猜Dropdown仅限于3项,因为这是我在屏幕上最大化时窗口的下限.
即使先前已选择某个项目,如何让它显示更多项目?
下面是一个示例Silverlight应用程序,它演示了浏览器内外的行为.
<UserControl x:Class="ComboBox_Test.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="650" d:DesignWidth="1024">
<Grid x:Name="LayoutRoot" Background="LightSteelBlue" Loaded="MainPage_OnLoaded">
<Grid.RowDefinitions>
<RowDefinition Height="3*" MinHeight="25" MaxHeight="25" />
<RowDefinition Height="35*" MinHeight="200" />
<RowDefinition Height="10*" MinHeight="70" MaxHeight="70" />
<RowDefinition Height="30*" MinHeight="230" MaxHeight="230" />
<RowDefinition Height="*" MinHeight="10" MaxHeight="30" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="12" />
<ColumnDefinition Width="150" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="12" />
</Grid.ColumnDefinitions>
<TextBlock Name="lblData" Text="Data:" Grid.Row="1" Grid.Column="1" />
<TextBox x:Name="txtData" Grid.Row="1" Grid.Column="2" VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Auto" />
<StackPanel x:Name="AccessPanel" Orientation="Vertical" HorizontalAlignment="Left" Margin="5"
Grid.Row="3" …Run Code Online (Sandbox Code Playgroud) Oracle 的 PL/SQL 对我来说相当新,因此我需要一些帮助来理解我尝试在 Merge 的 using 子句中使用参数的方式是否可行。
我正在使用 ODP.NET 使用 Oracle 11g 与现有的 C# .NET 4.0 代码库进行通信,该代码库使用 SQL 连接来检索/修改数据。现有的 SQL 语句如下所示:
MERGE INTO Worker Target
USING
(
SELECT
:Id0 Id
,:Options0 Options
FROM dual
UNION ALL
SELECT
:Id1 Id
,:Options1 Options
FROM dual
) Source
ON (Target.Id = Source.Id)
WHEN MATCHED THEN
UPDATE SET
Target.StateId = :StateId
,Target.Options = Source.Options
Run Code Online (Sandbox Code Playgroud)
在 C# StringBuilder 中生成 using 子句,以容纳不同数量的工作进程 Id/Option 对,同时创建匹配的参数。
StringBuilder usingClause = new StringBuilder();
List<OracleParameter> parameters = new List<OracleParameter>();
for …Run Code Online (Sandbox Code Playgroud) 我需要帮助的理解,如果我试图用一个参考光标作为一个返回值参数多个记录/值的方式,与PL/SQL只是作为一个OracleCommand对象的CommandText,而不是在存储过程或函数,即使是可能.
如果这是不可能的,我正在尝试做的是找到一种方法来发出一个PL/SQL语句,它将更新未知数量的记录(取决于WHERE子句匹配的数量),并返回所有的ID记录在OracleDataReader中更新,使用数据库的单次往返,而不使用存储过程或函数.
我正在使用Oracle 11g使用ODP.NET与现有的C#.NET 4.0代码库进行通信,该代码库使用SQL连接来检索/修改数据.我正在使用的简化测试表定义如下所示:
CREATE TABLE WorkerStatus
(
Id NUMERIC(38) NOT NULL
,StateId NUMERIC(38) NOT NULL
,StateReasonId NUMERIC(38) NOT NULL
,CONSTRAINT PK_WorkerStatus PRIMARY KEY ( Id )
)
Run Code Online (Sandbox Code Playgroud)
我预先用三个测试值填充表,如下所示:
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO WorkerStatus (Id, StateId, StateReasonId)
VALUES (1, 0, 0)';
EXECUTE IMMEDIATE 'INSERT INTO WorkerStatus (Id, StateId, StateReasonId)
VALUES (2, 0, 0)';
EXECUTE IMMEDIATE 'INSERT INTO WorkerStatus (Id, StateId, StateReasonId)
VALUES (3, 0, 0)';
END;
Run Code Online (Sandbox Code Playgroud)
从名为Oracle_UpdateWorkerStatus2的脚本文件加载并包含在OracleCommand.CommandText中的现有SQL语句如下所示:
DECLARE
TYPE id_array IS TABLE OF WorkerStatus.Id%TYPE INDEX BY PLS_INTEGER;
t_ids …Run Code Online (Sandbox Code Playgroud) 我正在使用C#.NET 4.0应用程序,它使用ODP.NET 11.2.0.2.0和Oracle 11g数据库.该应用程序使用数据预加载一些查找表,并且由于大多数记录少于20条,因此脚本运行得非常快.但是,其中一个脚本有802条记录,插入记录需要248.671秒,这对于如此少量的数据而言似乎过多,而数据库通过大量数据进行快速操作.
所以我想知道,通过脚本插入数据的速度是否比编写脚本的当前方式更快?
插入的表定义如下:
CREATE TABLE FileIds
(
Id NUMERIC(38) NOT NULL
,Name NVARCHAR2(50) DEFAULT 'Unknown' NOT NULL
,FileTypeGroupId NUMERIC(38) NOT NULL
,CONSTRAINT FK_FileIds_FileTypeGroups FOREIGN KEY ( FileTypeGroupId ) REFERENCES FileTypeGroups ( Id )
)
Run Code Online (Sandbox Code Playgroud)
要插入的脚本如下所示:
BEGIN
INSERT ALL
INTO FileIds ( Id, FileTypeGroupId ) VALUES (1152,5)
INTO FileIds ( Id, FileTypeGroupId ) VALUES (1197,10)
INTO FileIds ( Id, FileTypeGroupId ) VALUES (1200,6)
INTO FileIds ( Id, FileTypeGroupId ) VALUES (1143,3)
INTO FileIds ( Id, FileTypeGroupId ) VALUES …Run Code Online (Sandbox Code Playgroud)