在具有网格视图功能的同一页面中多次使用相同的用户控件

时间:2016-03-19 10:01:56

标签: c# asp.net .net user-controls

我使用用户控件来显示网格视图,网格包含自己的方法。

我已将网格标记为gvPastInvestment

我的问题是,当我在同一页面中使用控件两次时,网格ID是重复的,并且网格功能不会与两个用户控件分开。

有没有一种方法可以识别网格,因此每次复制用户控件时它都是唯一的,并且应该能够单独控制它的功能。

<asp:GridView ID="gvPastInvestment" runat="server" 
     AutoGenerateColumns="False" ShowHeaderWhenEmpty="True" 
     DataKeyNames="ID,InvestmentCategory,ContractorCategory,Year" ShowFooter="True"
     OnRowEditing="gvPastInvestment_RowEditing" 
     OnRowCancelingEdit="gvPastInvestment_RowCancelingEdit" 
     OnRowUpdating="gvPastInvestment_RowUpdating"
     OnRowDeleting="gvPastInvestment_RowDeleting" 
     OnRowCommand="gvPastInvestment_RowCommand"
     CssClass="table table-striped table-bordered table-hover" AllowSorting="true">
     <Columns>
         ....
     </Columns>
</asp:GridView>
<Triggers>
     <asp:AsyncPostBackTrigger ControlID="gvPastInvestment" />
</Triggers>

2 个答案:

答案 0 :(得分:0)

用户控件将处理Id, 它会创建唯一的ID,因此它可以识别自己。

以前没有处理,因为AllowSorting="true" 属性未添加到网格中, 一旦我补充说,用户控制做了什么需要做。

答案 1 :(得分:-1)

很久以前来自学校的.NET背景,并且知道有一些限制,并且不知道究竟如何将Core打破,或者.NET的新版本是什么因为他们试图使它们更像开源语言和框架友好,就像他们在Code中的Node.js pkg一样,使用它,这没关系。我有一个理论,但你如何将数据,AJAX提供给/ api /或pub api,EF,是XML还是JSON?

我猜你正在使用Async,原谅我的过程,已经有一段时间了,当我学习C#时,我正在使用带有IIS和EF的直接SQL,任何远程的Async都在做jQuery&#39 ; s .ajax电话,对吗?已经有一段时间了。无论如何,我不是绝对相信我会承认的那个词,而是来自更多角色和ES5 - &#39; 7&#39;背景,

主要是我的想法: 我想找到一种方法来创建我自己的道具,你可以基于id模板,有一个js逻辑,在一个自我调用的fn里面。

var randomness = use a salt or a generator here 
var salted = salt algorithm + something else for added security.
var randoIdNumber = randomness + salted * 95834959834; 

(或者你想要制作一个随机加密或解密等更改的脚本),然后在全局命名空间的同一范围内添加一个http帖子到列表中.json或/ api / genNumbers为您使用的上一个使用的ID进行检查。 **请记住此外,您必须将这些想法清理干净一些,并考虑可能的垃圾收集或效率,只需更换以前的var或保留它并添加&#39; let& #39;如果您的企业级别和项目规模很大,则阻止列表在列表中增长。 &lt; - 请记住,我在下面输入了这个位,对不起,它就像凌晨4点一样。

或者只是用这一切创建一个JS类。然后在你可以发挥作用的范围内制作某种列表和清单或JS数组kv。在您的ASP.NET中

id= "{ randomId.id }"
或角度class ng-class="ref to logic or just make it ugly and do it here var randomGvId = random generator "可能具有模板化的值,即异步&随机化(无论如何,或者无论如何,上面只是一些粗略的想法,我想的是什么)然后

立即添加最新的&#34;随机&#34; id为以前的id&#39; s / prev生成或显示的数字的列表,因此它确保它不会通过相同的组合或仅使用不同的命名约定,您可以确保逻辑检查以查看如果&#39; id&#39;之前已被分配或被用于类似于如何使用angular和javascript进行这些类型的事情。我会想那个方向。我会回过头来看看我的.NET,自4.5发布以来,获得了证书,但进入了指令和注入的js框架世界,我相信它很漂亮现在是.NET中的标准。如果您对我的意思感到好奇,请告诉我,我会为您提供一些代码。这是一个粗略的粗略答案,它对你的思考过程更具启发性。如果你没有任何线索如何去做,我很乐意帮助集思广益并回过头来找一个类似于我在一个项目中完成的类似代码的实例。可能会给你一个更好的主意。 Idk如果.NET完全不允许这样做。但它现在部分开源了。我敢打赌,我可以找到你在堆栈中运行的东西。你使用角度或角度2,KO,骨干或任何主要的JS - MV * / MVC框架?

"{ scriptData.randomid }" or randid=" " in props/attributes

警告,有人会为你更好地回答这个问题,但是试着给你一些我在我的世界中使用过一段时间没有.NET的想法:

这是一个有点半生不熟的想法,因为你必须确保它不会仅仅因为新id的显示而增加更多的GV,即使你可以改变id在VS中进行名称编辑,但它们只需要是唯一的,随时都可以。我不知道MS是否有不同的想法,以及它在运行时的呈现方式。也许只是看看它在运行时首先呈现的是什么,如果有一个模板化的数字或研究你是否可以添加你自己的属性/属性因为它会抹掉我写的第一百万行并忘记它,它就在包里几行代码然后使用这个想法,

<asp:WHATEVER ID="{ templatedRandoNumIdorGuid }" or leave id="" the same thing or blank if you can, and add like name="{ randomValue }" myRandomId="{ randomValue }" ng-class or ng-model or ng-bind ="{ randomValue }"

哈哈,我告诫你,它已经被烘焙了一半,但如果你可以拥有自定义道具/属性或者将id = value作为注入生成的值,这将是一个很好的方法。以上这不是最好的方法。我已经看到了一些不应该说的东西大声笑,但可能会帮助你理解我想要碰到的东西。

相关问题