FineUI 官方论坛
标题:
表格中DropDownList值的改变,从后台更新其他单元格的值
[打印本页]
作者:
928835106
时间:
2017-6-1 11:09
标题:
表格中DropDownList值的改变,从后台更新其他单元格的值
<f:Grid ID="Grid_Sru" runat="server" Title="SRU(Shop Replacement Units)" ShowHeader="false" ShowBorder="false" EnableTextSelection="true" AllowCellEditing="true" ForceFit="true" ClicksToEdit="1" DataKeyNames="
N">
<Columns>
<f:RenderField ColumnID="WORK_DECISION" DataField="WORK_DECISION" FieldType="String" HeaderText="Workshop Decision" RendererFunction="renderDecision">
<Editor>
<f
ropDownList ID="ddl" Required="true" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddl_OnSelectedIndexChanged" ForceSelection="true">
<f
istItem Text="Scrap" Value="SC" Selected="true"/>
<f
istItem Text="Replacement" Value="RE" />
</f
ropDownList>
</Editor>
</f:RenderField>
<f:TemplateField>
<ItemTemplate>
<asp:TextBox runat="server" Width="100%" ID="TextBox8" Text=''></asp:TextBox>
</ItemTemplate>
</f:TemplateField>
</Columns>
</f:Grid>
如何根据DropDownList 选择的值的改变,从后台数据库里面查询数据,然后将查询出来的数据显示在该行的TextBox8里面,TextBox8为只读属性。
作者:
sanshi
时间:
2017-6-1 11:37
这个不难,你基于空项目模拟实现发给客服QQ,会帮你补充完整(保证可以VS打开直接运行):
2877408506@qq.com
作者:
928835106
时间:
2017-6-2 09:42
已经发邮件给你了,谢谢。
作者:
sanshi
时间:
2017-6-2 10:06
已收到,不过你给的项目打开报错,并且是基于开源版的,不是专业版的。
请重新基于专业版空项目重现问题,并正常运行后发给我。
[attach]10216[/attach]
作者:
sanshi
时间:
2017-6-2 21:56
一个重要的概念要先搞清楚:
单元格编辑中,所有操作都是对单元格而言的,而不是单元格的编辑器(Editor)。
所以,我们需要注册表格的 AfterEdit 事件,而不是DropDownList的SelectedIndexChanged 事件,主要代码:
<f:Grid ID="Grid_Sru" runat="server" Title="SRU(Shop Replacement Units)" ShowHeader="false" ShowBorder="false" EnableTextSelection="true" AllowCellEditing="true" ForceFit="true" ClicksToEdit="1" DataKeyNames="PN"
EnableAfterEditEvent="true" OnAfterEdit="Grid_Sru_AfterEdit" >
<Columns>
<f:RenderField ColumnID="PN" DataField="PN" FieldType="String" HeaderText="PN"></f:RenderField>
<f:RenderField ColumnID="WORK_DECISION" DataField="WORK_DECISION" FieldType="String" HeaderText="Workshop Decision" RendererFunction="renderDecision">
<Editor>
<f:DropDownList ID="ddl" Required="true" runat="server" ForceSelection="true">
<f:ListItem Text="Scrap" Value="SC" Selected="true" />
<f:ListItem Text="Replacement" Value="RE" />
</f:DropDownList>
</Editor>
</f:RenderField>
<f:RenderField ColumnID="Price" DataField="price" HeaderText="Price">
<Editor>
<f:TextBox runat="server" Readonly="true" ID="TextBox8"></f:TextBox>
</Editor>
</f:RenderField>
</Columns>
</f:Grid>
复制代码
后台代码:
protected void Grid_Sru_AfterEdit(object sender, GridAfterEditEventArgs e)
{
if (e.ColumnID == "WORK_DECISION")
{
// pn = "2"
var pn = Grid_Sru.DataKeys[e.RowIndex][0].ToString();
// decisionValue = "RE"
var values = Grid_Sru.GetMergedData()[e.RowIndex].Value<JObject>("values");
var decisionValue = values.Value<string>("WORK_DECISION");
// 更新某个单元格的值
var updateScript = Grid_Sru.GetUpdateCellValueReference(e.RowIndex, "Price", "21");
updateScript = "F.noEvent(function () {" + updateScript + "});";
PageContext.RegisterStartupScript(updateScript);
}
}
复制代码
[attach]10220[/attach]
作者:
928835106
时间:
2017-8-23 14:43
但是现在存在这样一种情况就是:在你多次修改的时候获取的decisionValue 都是同一个值,应为只更改了Grid_Sru.GetUpdateCellValueReference(e.RowIndex, "Price", "21");如何两个值都更改?
var values = Grid_Sru.GetMergedData()[e.RowIndex].Value<JObject>("values");
var decisionValue = values.Value<string>("WORK_DECISION");
作者:
sanshi
时间:
2017-8-23 16:28
928835106 发表于 2017-8-23 14:43
但是现在存在这样一种情况就是:在你多次修改的时候获取的decisionValue 都是同一个值,应为只更改了Grid_S ...
下面是更新一个单元格的值:
// 更新某个单元格的值
var updateScript = Grid_Sru.GetUpdateCellValueReference(e.RowIndex, "Price", "21");
updateScript = "F.noEvent(function () {" + updateScript + "});";
PageContext.RegisterStartupScript(updateScript);
复制代码
当然你可以更新多个单元格的值:
// 更新某个单元格的值
var updateScript1 = Grid_Sru.GetUpdateCellValueReference(e.RowIndex, "Price", "21");
var updateScript2 = Grid_Sru.GetUpdateCellValueReference(.。。。。。。);
var updateScript = "F.noEvent(function () {" + updateScript1 + updateScript2 + "});";
PageContext.RegisterStartupScript(updateScript);
复制代码
作者:
928835106
时间:
2017-8-23 16:33
我试过这种方法 ,下次取到的 var decisionValue = values.Value<string>("WORK_DECISION"); 还是我第一次更改的值。
作者:
928835106
时间:
2017-8-23 16:49
我已经试过这种方法了,没用,我可能反应的情况不是很准确。
比如页面加载的时候 WORK_DECISION 是Xchange ,price是5
1.我修改work_decisin为Scrap/Replacement ,对应的价格是3. 到这一步是正确的。
2.我又将work_decisin为Xchange,但是我在后台获取的 decisionValue = values.Value<string>("WORK_DECISION"); 还是 Scrap/Replacement 。
欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/)
Powered by Discuz! X3.4