如何用另一个值更新gridview的标签值

时间:2010-01-23 18:11:16

标签: asp.net

我有ajax评级控制的gridview,我正在更新更改事件的评级值,我使用sql数据源将数据保存到数据库中,我想将更改值显示到另一个标签。但是当我更新值时它在数据库中进行更改,但不在标签中进行更改。请告诉我如何在使用这些代码的同时更改lbel值。

 <asp:GridView ID="GVTweet" runat="server" AllowSorting="True" DataKeyNames="id" AllowPaging="true"
                               AutoGenerateColumns="False" GridLines="Horizontal" PageSize="15" Width="700px"
                               onselectedindexchanged="GVTweet_SelectedIndexChanged" 
                               onrowcancelingedit="GVTweet_RowCancelingEdit" 
                               onrowediting="GVTweet_RowEditing" 
                               onrowupdated="GVTweet_RowUpdated" onrowupdating="GVTweet_RowUpdating" 
                               DataSourceID="SqlDataSource2" 
                               onpageindexchanging="GVTweet_PageIndexChanging" >

<HeaderStyle />
                               <Columns>
<asp:TemplateField HeaderImageUrl="~/images/rate1.png" 
                                        HeaderStyle-CssClass="headerCss1" HeaderText="Rate(1-5)" 
                                        SortExpression="Rating" >
                                        <ItemTemplate>
                                            <table border="0" cellpadding="0" cellspacing="0" width="auto">
                                                <tr style="width:150px;" valign="top" >
                                                    <td style="height:30px;">
                                                    <asp:Label ID="lblTotalRate" runat="server" 
                                                            Text='<%#DataBinder.Eval(Container.DataItem, "TotalRate")%>'></asp:Label>

                                                    </td>
                                                </tr>   
                                                <tr style="width:150px;" valign="top" >
                                                    <td style="height:30px;">

                                                        <asp:UpdatePanel ID="updtpnlTweet" runat="server">
                                                            <ContentTemplate>
                                                                <cc1:Rating ID="rateTweet" runat="server" CurrentRating='<%# Bind("Rating") %>' 
                                                                    EmptyStarCssClass="empatyStarRating" FilledStarCssClass="filledStarRating" 
                                                                    MaxRating="5" onchanged="rateTweet_Changed" StarCssClass="ratingStar"
                                                                    WaitingStarCssClass="savedStarRating">
                                                                </cc1:Rating>
                                                            </ContentTemplate>
                                                        </asp:UpdatePanel>
                                                    </td>
                                                </tr>
                                            </table>
                                        </ItemTemplate>
                                        <HeaderStyle CssClass="headerCss1" />
                                </asp:TemplateField>

这是我使用的html,我希望在此标签lblTotalRate中更新后的评级值。

protected void rateTweet_Changed(object sender, AjaxControlToolkit.RatingEventArgs e)
{
    try
    {
        // cast rating control which has initiated the call:
        AjaxControlToolkit.Rating myRating = (AjaxControlToolkit.Rating)sender;
        // regular expression which will help identifying row number: 
        System.Text.RegularExpressions.Regex rexLineNo = new System.Text.RegularExpressions.Regex("ctl\\d+");
        // update the record based on the recodrd id
        this.updateRating(this.ProductId(rexLineNo.Match(myRating.UniqueID).ToString()), e.Value);
        // the above line does the following: 
        // rexLineNo.Match(myRating.UniqueID).ToString() - finds "ctl and line number 

        //GVTweet.DataSourceID = "SqlDataSource2";
       // GVTweet.DataBind();
        GVTweet_RowUpdated( sender2, e2);
     //   this.Page.Form.Action = "AddRating()";

       // SqlDataSource2_Updated(sender1, e1);

    }
    catch
    {

    }

}

如果有任何好友请告诉我.javascript,两者对我都没问题。

这是代码背后的代码

enter code here

1 个答案:

答案 0 :(得分:1)

似乎缺少一段代码...... 无论如何,据我所知,从代码中看,标签不是UpdatePanel。如果预期的行为是异步更改两个控件,您还必须在Label中管理部分更新,或触发完整的页面回发(这可能不是您想要的)。