我希望我的所有图层BLL,DAL和UI共享类(具体或接口).
这真的是一种不好的做法吗?
我不想从我的DAL方法返回数据表,而是返回BLL可以直接使用的对象.
我希望有一个单独的VS项目,其中包含所有层应该知道的类.
示例:我想定义一个所有层都应该知道的批次类.UI应该能够接收批次类,以便显示或使用户能够提交要处理的批次.此外,DAL应该能够使用批次类查询数据库并返回它们.另一方面,BLL应该获得这些批次并将业务规则应用到它们上.
如果这是完全错误的替代品有哪些?
我可能在这里缺少基本知识,但我会去找它并问它.
让我们说我们有一个字符串数组:
ItemCode
ItemDescription
Run Code Online (Sandbox Code Playgroud)
我们有一个班级:
public class InventoryItem
{
public string ItemCode { get; set; }
public string ItemDescription { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我希望能够根据数组的值动态引用InventoryItem的属性.
我需要遍历数组并通过数组的当前字符串成员获取类的属性值.
我该怎么做?
我有这样的形式:
<form role="form" class="form-inline" name="frmUserData" id="frmUserData">
<div class="form-group">
<label for="txtlitm">Item Code:</label>
<input type="text" class="form-control" id="txtlitm" name="txtlitm" autocomplete="off">
</div>
<div class="form-group">
<label for="txtmcu">Branch Plant (filter):</label>
<input type="text" class="form-control" id="txtmcu" name="txtmcu">
</div>
<div class="form-group">
<label for="txtlocn">Location (filter):</label>
<input type="text" class="form-control" id="txtlocn" name='txtlocn'>
</div>
<div class="form-group">
<button type="button" class="pull-left btn btn-default" id="btnGO">
Search
</button>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
在我启用typeahead.js之后看起来像这样:

项目代码标签未与文本框对齐,与其他字段对齐.
我该怎么办才能解决这个问题?
我正在尝试使用cl_salv_bs_runtime_info以在标准报告中使用SUBMIT后在内存中获取ALV数据。
上面的代码是:
REPORT ztest1.
FIELD-SYMBOLS <lt_pay_data> TYPE ANY TABLE.
DATA lr_pay_data TYPE REF TO data.
cl_salv_bs_runtime_info=>set(
EXPORTING display = abap_false
metadata = abap_false
data = abap_true ).
SUBMIT rfts7000
AND RETURN.
TRY.
cl_salv_bs_runtime_info=>get_data_ref(
IMPORTING r_data = lr_pay_data ).
ASSIGN lr_pay_data->* TO <lt_pay_data>.
CATCH cx_salv_bs_sc_runtime_info.
MESSAGE `Unable to retrieve ALV data` TYPE 'E'.
ENDTRY.
cl_salv_bs_runtime_info=>clear_all( ).
Run Code Online (Sandbox Code Playgroud)
运行时,程序rfts7000会运行并提示您选择数据。
提交选择屏幕后,我得到:
这是使用显示一段时间的状态消息的最佳方式吗?
private void SetStatus(Color _color, string _msg)
{
System.Threading.Thread t = new System.Threading.Thread(() =>
{
stsStatusMsg.ForeColor = _color;
stsStatusMsg.Text = _msg;
System.Threading.Thread.Sleep(2000);
stsStatusMsg.Text = "";
});
t.Start();
}
Run Code Online (Sandbox Code Playgroud)
调用它的示例:
SetStatus(Color.Red, AppMessages["msgALREADYIN"]);
Run Code Online (Sandbox Code Playgroud)
stsStatusMsgToolStripStatusLabel在整个应用程序操作期间,只能通过此方法访问(即a ).
上面的代码实际上有效.消息显示在控件上2秒钟然后消失......
每次按下按钮,我都会在文件中写入一行文本.
我已经定义了一个这样的静态类:
public static class PalletRecord
{
public static string MachineName { get; set; }
public static DateTime TimeStamp { get; set; }
public static string BranchPlant { get; set; }
public static string Location { get; set; }
public static string Data { get; set; }
public static string ItemCode { get; set; }
public static string ItemDescription { get; set; }
public static decimal Quantity { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
每次我需要写入文件时,我填充静态类属性,我使用File.AppendAllLines写入文本文件.
我应该用非静态类做到吗?
在此代码运行时,我无法在 UI 中移动或执行任何操作:
var a = txtLot.Text;
var b = cmbMcu.SelectedItem.ToString();
var c = cmbLocn.SelectedItem.ToString();
var itm = Task<JDEItemLotAvailability>
.Factory.StartNew(() =>
{
btnCheck.BackColor = Color.Red;
var ret = Dal.GetLotAvailabilityF41021(a, b, c);
btnCheck.BackColor = Color.Transparent;
return ret;
}
);
lblDescriptionValue.Text = itm.Result.Description;
lblItemCodeValue.Text = itm.Result.Code;
lblQuantityValue.Text = itm.Result.AvailableQuantity.ToString();
Run Code Online (Sandbox Code Playgroud)
我尝试评论对 Dal 方法的调用并改为使用 thread.sleep(5000) 但我仍然无法移动表单。
编辑:也许我使用错误的方法来取回结果?
更新:
在第一个回复(约翰的)之后,我尝试了这个:
var a = txtLot.Text;
var b = cmbMcu.SelectedItem.ToString();
var c = cmbLocn.SelectedItem.ToString();
var itm = Task<JDEItemLotAvailability>
.Factory.StartNew(() =>
{
btnCheck.BackColor = Color.Red;
var ret = …Run Code Online (Sandbox Code Playgroud) 我有一个数组:
$results =@()
Run Code Online (Sandbox Code Playgroud)
然后我通过wmi循环自定义逻辑并创建我添加到数组的自定义对象,如下所示:
$item= @{}
$item.freePercent = $freePercent
$item.freeGB = $freeGB
$item.system = $system
$item.disk = $disk
$results += $item
Run Code Online (Sandbox Code Playgroud)
我知道想要对结果数组中的一些东西,比如转换为html.
我可以用foreach和自定义html写作,但我想使用convertto-html ...
PS我可以打印出这样的数据,但只有这样:
foreach($result in $results) {
$result.freeGB
}
Run Code Online (Sandbox Code Playgroud)