FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 4601|回复: 8
打印 上一主题 下一主题

表格中DropDownList值的改变,从后台更新其他单元格的值

[复制链接]
跳转到指定楼层
楼主
发表于 2017-6-1 11:09:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  <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>
                                                           <fropDownList ID="ddl" Required="true" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddl_OnSelectedIndexChanged" ForceSelection="true">
                                                           <fistItem Text="Scrap" Value="SC" Selected="true"/>
                                                            <fistItem Text="Replacement" Value="RE" />
                                                         </fropDownList>
                                                      </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为只读属性。
沙发
发表于 2017-6-1 11:37:41 | 只看该作者
这个不难,你基于空项目模拟实现发给客服QQ,会帮你补充完整(保证可以VS打开直接运行):2877408506@qq.com
板凳
 楼主| 发表于 2017-6-2 09:42:09 | 只看该作者
已经发邮件给你了,谢谢。
地板
发表于 2017-6-2 10:06:45 | 只看该作者
已收到,不过你给的项目打开报错,并且是基于开源版的,不是专业版的。
请重新基于专业版空项目重现问题,并正常运行后发给我。





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
5#
发表于 2017-6-2 21:56:52 | 只看该作者
一个重要的概念要先搞清楚:单元格编辑中,所有操作都是对单元格而言的,而不是单元格的编辑器(Editor)。

所以,我们需要注册表格的 AfterEdit 事件,而不是DropDownList的SelectedIndexChanged 事件,主要代码:
  1. <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"
  2.         EnableAfterEditEvent="true" OnAfterEdit="Grid_Sru_AfterEdit" >
  3.         <Columns>
  4.                 <f:RenderField ColumnID="PN" DataField="PN" FieldType="String" HeaderText="PN"></f:RenderField>
  5.                 <f:RenderField ColumnID="WORK_DECISION" DataField="WORK_DECISION" FieldType="String" HeaderText="Workshop Decision" RendererFunction="renderDecision">
  6.                         <Editor>
  7.                                 <f:DropDownList ID="ddl" Required="true" runat="server" ForceSelection="true">
  8.                                         <f:ListItem Text="Scrap" Value="SC" Selected="true" />
  9.                                         <f:ListItem Text="Replacement" Value="RE" />
  10.                                 </f:DropDownList>
  11.                         </Editor>
  12.                 </f:RenderField>
  13.                 <f:RenderField ColumnID="Price" DataField="price" HeaderText="Price">
  14.                         <Editor>
  15.                                 <f:TextBox runat="server" Readonly="true" ID="TextBox8"></f:TextBox>
  16.                         </Editor>
  17.                 </f:RenderField>
  18.         </Columns>
  19. </f:Grid>
复制代码
后台代码:
  1. protected void Grid_Sru_AfterEdit(object sender, GridAfterEditEventArgs e)
  2.         {
  3.             if (e.ColumnID == "WORK_DECISION")
  4.             {
  5.                 // pn = "2"
  6.                 var pn = Grid_Sru.DataKeys[e.RowIndex][0].ToString();

  7.                 // decisionValue = "RE"
  8.                 var values = Grid_Sru.GetMergedData()[e.RowIndex].Value<JObject>("values");
  9.                 var decisionValue = values.Value<string>("WORK_DECISION");

  10.                 // 更新某个单元格的值
  11.                 var updateScript = Grid_Sru.GetUpdateCellValueReference(e.RowIndex, "Price", "21");
  12.                 updateScript = "F.noEvent(function () {" + updateScript + "});";
  13.                 PageContext.RegisterStartupScript(updateScript);
  14.             }
  15.         }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
6#
 楼主| 发表于 2017-8-23 14:43:54 | 只看该作者
但是现在存在这样一种情况就是:在你多次修改的时候获取的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");
7#
发表于 2017-8-23 16:28:37 | 只看该作者
928835106 发表于 2017-8-23 14:43
但是现在存在这样一种情况就是:在你多次修改的时候获取的decisionValue 都是同一个值,应为只更改了Grid_S ...



下面是更新一个单元格的值:
  1. // 更新某个单元格的值
  2.                 var updateScript = Grid_Sru.GetUpdateCellValueReference(e.RowIndex, "Price", "21");
  3.                 updateScript = "F.noEvent(function () {" + updateScript + "});";
  4.                 PageContext.RegisterStartupScript(updateScript);
复制代码


当然你可以更新多个单元格的值:
  1. // 更新某个单元格的值
  2. var updateScript1 = Grid_Sru.GetUpdateCellValueReference(e.RowIndex, "Price", "21");
  3. var updateScript2 = Grid_Sru.GetUpdateCellValueReference(.。。。。。。);
  4. var updateScript = "F.noEvent(function () {" + updateScript1 + updateScript2 + "});";
  5. PageContext.RegisterStartupScript(updateScript);
复制代码


8#
 楼主| 发表于 2017-8-23 16:33:31 | 只看该作者
我试过这种方法 ,下次取到的 var decisionValue = values.Value<string>("WORK_DECISION"); 还是我第一次更改的值。
9#
 楼主| 发表于 2017-8-23 16:49:26 | 只看该作者
我已经试过这种方法了,没用,我可能反应的情况不是很准确。

比如页面加载的时候  WORK_DECISION 是Xchange ,price是5
1.我修改work_decisin为Scrap/Replacement ,对应的价格是3.  到这一步是正确的。
2.我又将work_decisin为Xchange,但是我在后台获取的    decisionValue = values.Value<string>("WORK_DECISION"); 还是 Scrap/Replacement 。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-26 17:31 , Processed in 0.048164 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表