Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET UpdatePanel和FaceBook/Twitter按钮_C#_.net_Facebook_Twitter_Updatepanel - Fatal编程技术网

C# .NET UpdatePanel和FaceBook/Twitter按钮

C# .NET UpdatePanel和FaceBook/Twitter按钮,c#,.net,facebook,twitter,updatepanel,C#,.net,Facebook,Twitter,Updatepanel,我有一个UpdatePanel,里面有一个gridview。在gridview中的每个GridViewRow上,我都有一个Twitter和FaceBook按钮 gridview通过页面加载上的按钮可以很好地呈现,但是,一旦在updatepanel上完成了部分回发,Twitter和FaceBook按钮就不会呈现 <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <!

我有一个UpdatePanel,里面有一个gridview。在gridview中的每个GridViewRow上,我都有一个Twitter和FaceBook按钮

gridview通过页面加载上的按钮可以很好地呈现,但是,一旦在updatepanel上完成了部分回发,Twitter和FaceBook按钮就不会呈现

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
<!-- search controls.... -->
 <asp:ImageButton ID="btnSearch" ImageUrl="~/img/button-search.gif" runat="server" />

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" EnableModelValidation="True"
                BorderStyle="None" Font-Size="Small" GridLines="None" AllowPaging="True" ShowFooter="True"
                Width="100%" OnPageIndexChanging="GridView1_PageIndexChanging">
                <RowStyle CssClass="row1" />
                <AlternatingRowStyle CssClass="row2" />
                <Columns>
                    <asp:TemplateField>
                        <ItemTemplate>
                            ...
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:Literal ID="ltlTwitter" runat="server" Text='<%# GetTwitterURL(Eval("ID"), Eval("SomeText")) %>'></asp:Literal>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:Literal ID="ltlFacebook" runat="server" Text='<%# GetFacebookURL(Eval("ID")) %>'></asp:Literal>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" Visible="False" />
                </Columns>
                <EmptyDataTemplate>
                    <strong>There are no offers for this search criteria.</strong>
                </EmptyDataTemplate>
            </asp:GridView>
</ContentTemplate>
        <Triggers>
            <asp:PostBackTrigger ControlID="btnSearch" />
        </Triggers>
    </asp:UpdatePanel>
”;
某人加上(“”);
使某人返回字符串();
}
公共静态字符串GetFacebookURL(对象OfferID)
{
...
返回string.Format(“”,obj.Property,someInt);
}
此外,所讨论的页面是母版页的子页面

下面是后面的附加代码

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        this.BindOffersGrid(true);
    }
}

public List<Offer> CurrentOffersDataSet
{
    get
    {
        object o = ViewState["CurrentOfferDataSet"];
        return (o == null ? new List<Offer>() : (List<Offer>)o);
    }
    set
    {
        ViewState["CurrentOfferDataSet"] = value;
    }
}

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView1.PageIndex = e.NewPageIndex;
    GridView1.DataSource = this.CurrentOffersDataSet;
    GridView1.DataBind();
}

private void BindOffersGrid(bool ApplyRandomSort)
{
    List<Offer> lstOffers = Offers.GetAllBySearchCriteria(
        Convert.ToInt32(ddlOfferCounty.SelectedValue), 
        Convert.ToInt32(ddlOfferTypes.SelectedValue),
        Convert.ToDateTime(ddlOfferDate.SelectedValue), -1, true);

    ...
    //Some filtering of the dataset with Linq
    ...

    GridView1.DataSourceID = string.Empty;
    this.CurrentOffersDataSet = lstFilteredOffers.
        OrderByDescending(a => a.IsExclusive).
        ThenBy(a => Guid.NewGuid()).
        ToList();
    GridView1.DataSource = this.CurrentOffersDataSet;
    GridView1.DataBind();
}
受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!IsPostBack)
{
此.BindOffersGrid(true);
}
}
公共列表CurrentOffers数据集
{
得到
{
对象o=视图状态[“CurrentOfferDataSet”];
返回(o==null?新列表():(列表)o);
}
设置
{
ViewState[“CurrentOfferDataSet”]=值;
}
}
受保护的无效GridView1\u页面索引交换(对象发送方,GridViewPageEventArgs e)
{
GridView1.PageIndex=e.NewPageIndex;
GridView1.DataSource=this.CurrentOffersDataSet;
GridView1.DataBind();
}
专用void BindOffersGrid(bool ApplyRandomSort)
{
List lstOffers=Offers.GetAllBySearchCriteria(
转换为32(ddlOfferCounty.SelectedValue),
转换为32(ddlOfferTypes.SelectedValue),
Convert.ToDateTime(ddlOfferDate.SelectedValue),-1,true);
...
//使用Linq对数据集进行一些过滤
...
GridView1.DataSourceID=string.Empty;
this.CurrentOffersDataSet=lstFilteredOffers。
OrderByDescending(a=>a.IsExclusive)。
然后是(a=>Guid.NewGuid()。
托利斯特();
GridView1.DataSource=this.CurrentOffersDataSet;
GridView1.DataBind();
}

好的,我在我的孩子页面的最后添加了以下代码,现在Twitter和FaceBook的按钮在部分回发后出现

<script type="text/javascript">

        var prm = Sys.WebForms.PageRequestManager.getInstance();
        prm.add_pageLoaded(pageLoaded);

        var _panels, _count;

        function pageLoaded(sender, args) {
            if (_panels != undefined && _panels.length > 0) {
                for (i = 0; i < _panels.length; i++)
                    _panels[i].dispose();
            }

            var panels = args.get_panelsUpdated();

            if (panels.length > 0) {

                updateFbLike();
            }
        }

        function updateFbLike() {
            $.getScript("http://platform.twitter.com/widgets.js");
            FB.XFBML.parse();
        }


    </script>

var prm=Sys.WebForms.PageRequestManager.getInstance();
prm.添加页面加载(页面加载);
变量面板,计数;
已加载函数页(发送方,参数){
如果(_panels!=未定义和&u panels.length>0){
对于(i=0;i<_panels.length;i++)
_面板[i].dispose();
}
var panels=args.get_panelsUpdated();
如果(面板长度>0){
updateFbLike();
}
}
函数updateFbLike(){
$.getScript(“http://platform.twitter.com/widgets.js");
FB.XFBML.parse();
}

您是否尝试过在项目绑定事件上的代码隐藏中设置它们?可能是内联脚本调用不完全兼容,但我不确定,因为我倾向于避免使用,例如,当然。@Seany84:应该注意的是,对于在
G中进行的连接,您并不真正需要
StringBuilder
etTwitterURL
方法;您可以通过调用
string.Format
并将字符串拆分为多行上的多个串联来实现。编译器将在编译时尽可能串联,然后串联操作将调用
string.Concat
,它预先确定返回值的大小和n将所有项目复制到返回的字符串中。@casperOne谢谢您的提示。@Drop.失望先生,您是否建议我在网格的RowDatabound事件中调用getWitter()/GetFB()。@Drop.失望先生,我已尝试调用GetFB()和getWitter()以及在RowDataBound事件上设置文本,但这是完全相同的问题。
<script type="text/javascript">

        var prm = Sys.WebForms.PageRequestManager.getInstance();
        prm.add_pageLoaded(pageLoaded);

        var _panels, _count;

        function pageLoaded(sender, args) {
            if (_panels != undefined && _panels.length > 0) {
                for (i = 0; i < _panels.length; i++)
                    _panels[i].dispose();
            }

            var panels = args.get_panelsUpdated();

            if (panels.length > 0) {

                updateFbLike();
            }
        }

        function updateFbLike() {
            $.getScript("http://platform.twitter.com/widgets.js");
            FB.XFBML.parse();
        }


    </script>