标签: user-controls

如何在ListView中使UpdatePanel工作?

我有一个列表视图的页面,显示类似帖子的内容.在每个帖子上应该有一个"费率框",其工作方式类似于Facebook中的"赞"按钮.速率框是用户控件,其中包含更新面板.

如果我在页面中放置了一些随机值的控件它可以很好地工作 - 但是当我把它放在ListView中它应该位于的位置时,它将无法工作.正在调用该方法,但没有任何反应.

我简化了一些代码,以便更容易理解:

"价格框"控件:

    protected void OnRateClick(object sender, ImageClickEventArgs e)
    {
        Rate++;
        RateAmountLiteral.Text = Rate.ToString();
        RateButton.Visible = false;
        FeedbackLiteral.Visible = true;

        rateButtonPanel.Update();
    }
Run Code Online (Sandbox Code Playgroud)

ASCX:

<div class="rate_div">
    <asp:UpdatePanel ID="rateButtonPanel" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <fieldset>
                Rate:
                <asp:Literal ID="RateAmountLiteral" runat="server"></asp:Literal>
                <asp:ImageButton ID="RateButton" runat="server" ImageUrl="icn_rate.png"
                    OnClick="OnRateClick" />
                <asp:Literal ID="FeedbackLiteral" runat="server" Visible="false">Thanks for rating!</asp:Literal>
            </fieldset>
        </ContentTemplate>
    </asp:UpdatePanel>
</div>
Run Code Online (Sandbox Code Playgroud)

aspx(使用控件):

                     <asp:ListView ID="PostsView" runat="server" ItemPlaceholderID="itemPlaceHolder2"
                        <LayoutTemplate>
                            <div class="posts_div">
                                <asp:PlaceHolder ID="itemPlaceHolder2" runat="server" />
                            </div>
                        </LayoutTemplate>
                        <ItemTemplate>
                            <div class="post_div">
                                <div class="post_body">
                                    <%# CurrentPost.Body %>
                                </div>
                                <UC:RatingBox id="RatingBox" runat="server" …
Run Code Online (Sandbox Code Playgroud)

asp.net user-controls listview updatepanel

5
推荐指数
1
解决办法
1692
查看次数

WPF - UserControl继承

我在WPF中的控件继承有问题.我创建了一个名为BaseUserControl的UserControl.我希望此控件成为其他WPF userControl的基本控件.所以我写了另一个名为FirstComponent的UserControl.在下一步中,我更改了此代码

FirstComponent : UserControl
Run Code Online (Sandbox Code Playgroud)

对此

FirstComponent : BaseControl
Run Code Online (Sandbox Code Playgroud)

但是在编译期间我遇到了这个错误

Partial declarations of 'controlinheritance.componenets.FirstComponent' must not specify different base classes 
Run Code Online (Sandbox Code Playgroud)

我应该怎么做才能使FirstComponent从BaseControl派生?

编辑感谢abhishek回答我设法继承控件.我有另一个问题.在基类中我指定了一个属性public Grid _MainGrid {get; 组; }.现在我想在我的派生类中创建一个这个网格的实例.所以我使用了这个代码Howerver我得到一个错误属性'_MainGrid'没有值.8号线位置36.

wpf inheritance user-controls wpf-controls

5
推荐指数
1
解决办法
8237
查看次数

PreRender上的绑定控件

我被引导相信绑定你的控件的最佳点是PreRender.因为所有控件都准备好了,这是渲染之前的最后一个阶段等.这是正确的还是应该将控件绑定在不同的点?

非常感谢

路易

c# asp.net user-controls prerender

5
推荐指数
1
解决办法
6156
查看次数

我们如何使用通用处理程序加载usercontrol?

我想使用jquery ajax加载用户控件.我发现一个可能是通过通用处理程序加载usercontrol.任何人都帮助我.这里是我用来调用控件的ajax代码.

 <script type="text/javascript">
 function fillSigns() { 
                $.ajax({
                    url: "usercontrolhandler.ashx?control=signs.ascx",
                    context: document.body,
                    success: function (data) {                       
                        $('#signdiv').html(data);
                    }
                });
            }  
 </script>
Run Code Online (Sandbox Code Playgroud)

这是处理程序文件中的代码

public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        Page page = new Page();
        UserControl ctrl = (UserControl)page.LoadControl("~/" + context.Request["control"] + ".ascx");      
        page.Form.Controls.Add(ctrl);

        StringWriter stringWriter = new StringWriter();
        HtmlTextWriter tw = new HtmlTextWriter(stringWriter);
        ctrl.RenderControl(tw);
        context.Response.Write(stringWriter.ToString());
    } 
Run Code Online (Sandbox Code Playgroud)

此代码在下面显示的行中引发对象引用未找到错误.

 page.Form.Controls.Add(ctrl);
Run Code Online (Sandbox Code Playgroud)

asp.net generics ajax user-controls handler

5
推荐指数
1
解决办法
4820
查看次数

如何在运行时调整wpf中的用户控件

我是wpf开发的新手.在我的wpf应用程序中,我使用了用户控件.我需要的是在运行时如何调整用户控件的大小,

请帮我找到解决方案,如果我的方法有误,请指导我解决,

我的XAML代码是

<UserControl x:Class="test.pad"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300" Focusable="True" OverridesDefaultStyle="False">

    <Grid Width="102" Height="123" Name="Grid1" MouseMove="Grid1_MouseMove" MouseUp="Grid1_MouseUp" MouseDown="Grid1_MouseDown">
        <Grid.RenderTransform>
            <TranslateTransform x:Name="tt"/>
        </Grid.RenderTransform>

        <Border BorderBrush="Silver" BorderThickness="2">

            <Canvas Height="120" HorizontalAlignment="Left" Margin="0,1,0,0" Name="canvas1" VerticalAlignment="Top" Width="100" Grid.ColumnSpan="2">
                <RichTextBox Height="98" HorizontalAlignment="Left" Margin="0,24,0,0" Name="richTextBox1" VerticalAlignment="Top" Width="100" BorderThickness="2" Grid.ColumnSpan="2" Background="#FFFF96D8" Canvas.Top="-3" Canvas.Left="-1" />
                <Button BorderBrush="#FFFF96D8" Canvas.Left="46" Canvas.Top="-2" Height="23" Name="close" Width="27">

                </Button>
                <Button Height="23" Name="minimise" Width="27" BorderBrush="#FFFF96D8" Click="button1_Click" Canvas.Left="72" Canvas.Top="-2" ClipToBounds="False" IsEnabled="True" IsHitTestVisible="True" OverridesDefaultStyle="False" ForceCursor="False" Foreground="Black" MouseMove="button1_MouseEnter" MouseLeave="button1_MouseLeave">

            </Canvas>

        </Border>

    </Grid> …
Run Code Online (Sandbox Code Playgroud)

c# user-controls wpf-controls visual-studio-2008

5
推荐指数
1
解决办法
3276
查看次数

进行多语言用户控制

我正在开发一个用户控件,现在(在工作结束时)我正面临着使它成为多语言的问题.我想我可以这样做:

  1. 对于UI部分,我可以设置Localizable = true控件,让VS生成我需要的默认语言的所有"记录".
  2. 然后我必须手动添加我用于动态菜单,消息等的所有字符串
  3. 最后,我需要为我需要的语言创建所有资源文件

所以使用MSDN中的代码

Assembly myAssembly = this.GetType().Assembly;
ResourceManager mgr = new ResourceManager("namespace.resource", myAssembly);
mgr.GetString(...) 
Run Code Online (Sandbox Code Playgroud)

我的工作可以(轻松)完成.
但我有一些问题:

  1. 当我从最终用户使用我的控件(生成的DLL)时,new ResourceManager(...)由于目标应用程序中的主命名空间更改,我是否可以使用?
    考虑我不知道最终用户将使用哪个命名空间.
  2. 当我创建语言资源时,VS会生成附属程序集:有没有办法可以将这些文件"集成"到目标DLL中?
    我想尽可能只部署一个文件......
  3. 有没有更好的方法来完成我的任务?
  4. 在开发多语言控件时,有什么我真的需要关心的吗?

感谢大家


更新:(感谢@ lak-b的一些建议)

经过一些研究后我回答了一些问题:

  1. 这是真的,我可以硬编码命名空间,当最终用户将我的控件放在他的表单上时,它不会被更改
  2. 好吧,似乎没有一个简单的方法.
    无论如何,这个SO帖子提供了一个很好的教训和一个很好的解
  3. ...不,对于这个问题,我还在等待有人告诉我一个更好/更简单的方法
  4. 从lak-b中指定了一些关键点.
    还有什么我不得不担心的吗?

再次感谢

c# multilingual user-controls winforms

5
推荐指数
1
解决办法
2288
查看次数

从ASP.NET中的Web用户控件冒泡的事件

我在PageDefault.aspx中有两个UserControls - UserControl1.ascx和UserControl2.ascx:

我如何使用事件冒泡来调用method(GetLabelText() in UserControl1.ascx)UserControl2.ascx

这是我的示例代码 - 当我单击按钮(UserControl2Button1 in UserControl1.ascx)时 - 我想调用方法GetLabelText() from UserControl2.ascx- 使用事件冒泡.

PageDefault.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PageDefault.aspx.cs" Inherits="TelerikAjaxEvents.PageDefault" %>
<%@ Register TagPrefix="uc" TagName="UserControl1" Src="~/UserControl1.ascx" %>
<%@ Register TagPrefix="uc" TagName="UserControl2" Src="~/UserControl2.ascx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Page Default</title>
</head>
<body>
    <form id="form1" runat="server">
        UserControl1:
        <uc:UserControl1 ID="UserControl1" runat="server" />

        UserControl2:
        <uc:UserControl2 ID="UserControl2" runat="server" />

    </form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

UserControl1.ascx

<%@ Control Language="C#" …
Run Code Online (Sandbox Code Playgroud)

asp.net user-controls event-bubbling

5
推荐指数
1
解决办法
1万
查看次数

在我的用户控件或页面中调用System.Web.UI.Control.LoadRecursive()

我在我的一个页面上有一个用户控件,我在此页面上收到以下错误

Object reference not set to an instance of an object.
Run Code Online (Sandbox Code Playgroud)

我很容易解决这个问题,但是在这个错误的堆栈跟踪中发现了一些奇怪的东西.

当我检查堆栈跟踪时,这就像下面一样

at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Run Code Online (Sandbox Code Playgroud)

它不是完整的堆栈跟踪,而是它的一部分.我想知道这个函数"System.Web.UI.Control.LoadRecursive()"的作用是什么.它被称为11次,我担心这可能会导致我的应用程序出现性能问题.我认为这个函数被调用因为我正在使用用户控件.我在我的应用程序的许多地方使用这种用户控件.

如果有人知道,请告诉我.

performance user-controls c#-4.0

5
推荐指数
1
解决办法
2209
查看次数

如何使用asp.net从另一个usercontrol中调用usercontrol中的方法?

我有两个usercontrols:UserControl1并且UserControl2,这些控件添加在Page.aspx中.

UserControl1:此usercontrol包含此usercontrol中隐藏文本框的方法.这种方法叫做" HideTextbox"

UserControl2:我想调用方法" HideTextBox" UserControl2.

我怎样才能调用方法HideTextBoxUserControl2

c# asp.net user-controls

5
推荐指数
2
解决办法
2万
查看次数

如何将用户控件添加为列表框项

我正在使用WPF .net 4.5(c#),我想创建一个包含一系列用户控件的ListBox.(如果列表框是错误的控件类型,请告诉我).

我希望我的列表框将用户控件的副本作为列表项,每个列表项中包含不同的内容.

如何将用户控件添加到列表框?

感谢您的帮助!

c# wpf user-controls listbox listboxitem

5
推荐指数
1
解决办法
2741
查看次数