仿校内回复 c# .net

来源:互联网 发布:mac invalid argument 编辑:程序博客网 时间:2024/04/16 19:21

方法是用datalist(dltCaxaMsg)嵌套datalist (dltChildCaxaMsg)

代码如下

 

网页:
                        <asp:DataList ID="dltCaxaMsg" Width="570px" runat="server" SelectedItemStyle-BackColor="AliceBlue"
                            ItemStyle-HorizontalAlign="Left" ItemStyle-Wrap="true" OnItemDataBound="dltCaxaMsg_ItemDataBound"
                            OnItemCommand="dltCaxaMsg_ItemCommand">
                            <ItemStyle HorizontalAlign="Left" Wrap="True" />
                            <SelectedItemStyle BackColor="AliceBlue" />
                            <ItemTemplate>
                                <table width="570px">
                                    <tr>
                                        <td width="50px" align="left" class="td4" valign="top">
                                            <asp:ImageButton ID="btImg" runat="server" Width="50px" ImageUrl='<%# DataBinder.Eval(Container.DataItem,"PFile")%>' />
                                        </td>
                                        <td width="520px" class="td4">
                                            <div style="height: 25px; padding-top: 7px; padding-left: 15px;">
                                                <asp:Label ID="lbMsgId" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "MsgId")%>' Visible="false"></asp:Label>
                                                <asp:Label ID="lbOpId" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "OpId")%>' Visible="false"></asp:Label>
                                                <asp:LinkButton ID="btOp" ForeColor = "#527EC0" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "OpName")%>'></asp:LinkButton>&nbsp;
                                                <asp:Label ID="lbSex" runat="server" ForeColor="#204885" Text='<%# DataBinder.Eval(Container.DataItem, "Sex")%>' Visible = "false"></asp:Label>
                                                发表意见:
                                                <strong>
                                                    <asp:Label ID="lbSub" runat="server" ForeColor="#204885" Text='<%# DataBinder.Eval(Container.DataItem, "MsgSub")%>'></asp:Label>
                                                </strong>&nbsp;&nbsp;&nbsp;&nbsp;
                                                <asp:Label ID="lbCDate" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "CDate")%>'></asp:Label>
                                            </div>
                                            <br />
                                            <div>
                                                &nbsp;&nbsp;&nbsp;&nbsp;
                                                <asp:Label ID="lbCon" ForeColor = "Black" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "MsgCon")%>'></asp:Label>
                                            </div>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td colspan="2">
                                            <asp:UpdatePanel ID="up2" runat="server" UpdateMode="Conditional">
                                                <ContentTemplate>
                                                    <input id = "hidDisFlag" type = "hidden" value = "0" />
                                                    <table width="570px">
                                                        <tr>
                                                            <td width="78px">
                                                                &nbsp;
                                                            </td>
                                                            <td width="20px">
                                                                &nbsp;
                                                            </td>
                                                            <td width="482px">
                                                                <div runat = "server" visible = "true" id = "divReply">
                                                                    <asp:LinkButton ID="btDisReply" Text="收起回复" runat="server"></asp:LinkButton>(
                                                                    <asp:Label ID="lbReplyNum" ForeColor="Blue" runat="server" Text=""></asp:Label>)
                                                                </div>
                                                            </td>
                                                        </tr>
                                                        <tr>
                                                            <td colspan="3">
                                                                <table id="tbReply" runat="server" style ="display:block">
                                                                    <tr>
                                                                        <td width="98px">
                                                                            &nbsp;
                                                                        </td>
                                                                        <td width="482px">
                                                                            <asp:DataList ID="dltChildCaxaMsg" Width="482px" runat="server" SelectedItemStyle-BackColor="White"
                                                                                ItemStyle-HorizontalAlign="Left" ItemStyle-Wrap="true" OnItemDataBound="dltChildCaxaMsg_ItemDataBound"
                                                                                ShowFooter = "false" ShowHeader = "false"
                                                                                onitemcommand="dltChildCaxaMsg_ItemCommand">
                                                                                <HeaderTemplate>
                                                                                    <table>
                                                                                        <tr>
                                                                                            <td width="50px" align="left" class="td8" valign="top" style="background-color: #F0FAFF;">
                                                                                                <asp:ImageButton ID="btHeaderImg" runat="server" Width="50px" ImageUrl="" />
                                                                                            </td>
                                                                                            <td width="452px" class="td8" style="background-color: #F0FAFF;">
                                                                                                <asp:Label ID="lbHeaderSub" runat="server" Text=""></asp:Label>
                                                                                                <asp:LinkButton ID="btHeaderOp" ForeColor = "#527EC0" runat="server"  Text=""></asp:LinkButton>&nbsp;&nbsp;&nbsp;
                                                                                                <asp:Label ID="lbHeaderCDate" runat="server"  Text=""></asp:Label><br />
                                                                                                <br />
                                                                                                <asp:Label ID="lbHeaderCon" ForeColor = "Black" runat="server"  Text=""></asp:Label>
                                                                                            </td>
                                                                                        </tr>
                                                                                    </table>
                                                                                    <asp:LinkButton ID="btHeaderDisReply" Text="全部回复" runat="server" CommandName = "DisAll"></asp:LinkButton>(
                                                                                    <asp:Label ID="lbHeaderReplyNum" ForeColor="Blue" runat="server" Text=""></asp:Label>)
                                                                                </HeaderTemplate>
                                                                                <ItemTemplate>
                                                                                    <table>
                                                                                        <tr>
                                                                                            <td width="50px" align="left" class="td8" valign="top" style="background-color: #F0FAFF;">
                                                                                                <asp:ImageButton ID="btImg" runat="server" Width="50px" ImageUrl='<%# DataBinder.Eval(Container.DataItem,"[/"PFile/"]")%>' />
                                                                                                <asp:Label ID="lbSex" runat="server" ForeColor="#204885" Text='<%# DataBinder.Eval(Container.DataItem, "[/"Sex/"]")%>' Visible = "false"></asp:Label>
                                                                                            </td>
                                                                                            <td width="452px" class="td8" style="background-color: #F0FAFF;">
                                                                                                <asp:Label ID="lbSub" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "[/"MsgSub/"]")%>'></asp:Label>
                                                                                                <asp:LinkButton ID="btOp" ForeColor = "#527EC0" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "[/"OpName/"]")%>'></asp:LinkButton>&nbsp;&nbsp;&nbsp;
                                                                                                <asp:Label ID="lbOpId" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "[/"OpId/"]")%>' Visible="false"></asp:Label>
                                                                                                <asp:Label ID="lbCDate" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "[/"CDate/"]")%>'></asp:Label><br />
                                                                                                <br />
                                                                                                <asp:Label ID="lbCon" ForeColor = "Black" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "[/"MsgCon/"]")%>'></asp:Label>
                                                                                            </td>
                                                                                        </tr>
                                                                                    </table>
                                                                                    <br />
                                                                                </ItemTemplate>
                                                                                <FooterTemplate>
                                                                                    <table>
                                                                                        <tr>
                                                                                            <td width="50px" align="left" class="td8" valign="top" style="background-color: #F0FAFF;">
                                                                                                <asp:ImageButton ID="btFooterImg" runat="server" Width="50px" ImageUrl="" />
                                                                                            </td>
                                                                                            <td width="452px" class="td8" style="background-color: #F0FAFF;">
                                                                                                <asp:Label ID="lbFooterSub" runat="server" Text=""></asp:Label>
                                                                                                <asp:LinkButton ID="btFooterOp" ForeColor = "#527EC0" runat="server"  Text=""></asp:LinkButton>&nbsp;&nbsp;&nbsp;
                                                                                                <asp:Label ID="lbFooterCDate" runat="server"  Text=""></asp:Label><br />
                                                                                                <br />
                                                                                                <asp:Label ID="lbFooterCon" ForeColor = "Black" runat="server"  Text=""></asp:Label>
                                                                                            </td>
                                                                                        </tr>
                                                                                    </table>
                                                                                </FooterTemplate>
                                                                            </asp:DataList>
                                                                        </td>
                                                                    </tr>
                                                                </table>
                                                            </td>
                                                        </tr>
                                                        <tr>
                                                            <td width="78px">
                                                                &nbsp;
                                                            </td>
                                                            <td width="20px">
                                                                &nbsp;
                                                            </td>
                                                            <td width="482px">
                                                                <asp:TextBox ID="txtReply" runat="server" Text="" CssClass="nonwatermarked" Width="470px"
                                                                    Rows="3" TextMode="MultiLine"></asp:TextBox>
                                                                <cc1:TextBoxWatermarkExtender ID="TBWE" runat="server" TargetControlID="txtReply"
                                                                    WatermarkText="回复" WatermarkCssClass="watermarked" />
                                                                <asp:Button ID="btReply" runat="server" Text="回复" CssClass="displaynone" CommandName="Reply" BackColor="#0099FF" />
                                                            </td>
                                                        </tr>
                                                    </table>
                                                    <br />
                                                </ContentTemplate>
                                            </asp:UpdatePanel>
                                        </td>
                                    </tr>
                                </table>
                            </ItemTemplate>
                        </asp:DataList>

 

 

代码页面:
        protected void dltCaxaMsg_ItemDataBound(object sender, DataListItemEventArgs e)
        {
            if (e.Item.ItemIndex < 0)
                return;
            string sex = ((Label)e.Item.FindControl("lbSex")).Text;
            ImageButton btImg = (ImageButton)e.Item.FindControl("btImg");
            if (btImg.ImageUrl == "")
            {
                if(sex == "0")
                    btImg.ImageUrl = "Image/man.png";
                else
                    btImg.ImageUrl = "Image/woman.png";
            }
            string opid = ((Label)e.Item.FindControl("lbOpId")).Text;
            LinkButton btOp = (LinkButton)e.Item.FindControl("btOp");
            btImg.Attributes.Add("onclick", "javascript:return toblog(" + opid + ");");
            btOp.Attributes.Add("onclick", "javascript:return toblog(" + opid + ");");
            TextBox txtReply = (TextBox)e.Item.FindControl("txtReply");
            Button btReply = (Button)e.Item.FindControl("btReply");
            HtmlTable tb = (HtmlTable)e.Item.FindControl("tbReply");
            //tb.Attributes.CssStyle.Value = "display:block";
            LinkButton btDisReply = (LinkButton)e.Item.FindControl("btDisReply");
            //btDisReply.Text = "展开回复";
            txtReply.Attributes.Add("onFocus", "javascript:return reply('" + btReply.ClientID + "');");
            txtReply.Attributes.Add("onBlur", "javascript:return noreply('" + btReply.ClientID + "','" + tb.ClientID + "','" + txtReply.ClientID + "');");
            btDisReply.Attributes.Add("onclick", "javascript:return disreply('" + btDisReply.ClientID + "','" + tb.ClientID + "');");
            DataList list = (DataList)e.Item.FindControl("dltChildCaxaMsg");
            list.DataSource = ((DataRowView)e.Item.DataItem).Row.GetChildRows("MyRel");
            list.DataBind();
            Label lbReplyNum = (Label)e.Item.FindControl("lbReplyNum");
            int replynum = list.Items.Count;
            lbReplyNum.Text = replynum.ToString();
            if (replynum > 2)
            {
                list.ShowFooter = true;
                list.ShowHeader = true;

                ImageButton btHeaderImg = (ImageButton)list.Controls[0].FindControl("btHeaderImg");
                Label lbHeaderSub = (Label)list.Controls[0].FindControl("lbHeaderSub");
                LinkButton btHeaderOp = (LinkButton)list.Controls[0].FindControl("btHeaderOp");
                Label lbHeaderCDate = (Label)list.Controls[0].FindControl("lbHeaderCDate");
                Label lbHeaderCon = (Label)list.Controls[0].FindControl("lbHeaderCon");
                Label lbHeaderReplyNum = (Label)list.Controls[0].FindControl("lbHeaderReplyNum");

                btHeaderImg.ImageUrl = ((ImageButton)list.Items[0].FindControl("btImg")).ImageUrl;
                lbHeaderSub.Text = ((Label)list.Items[0].FindControl("lbSub")).Text;
                btHeaderOp.Text = ((LinkButton)list.Items[0].FindControl("btOp")).Text;
                lbHeaderCDate.Text = ((Label)list.Items[0].FindControl("lbCDate")).Text;
                lbHeaderCon.Text = ((Label)list.Items[0].FindControl("lbCon")).Text;
                opid = ((Label)list.Items[0].FindControl("lbOpId")).Text;
                btHeaderImg.Attributes.Add("onclick", "javascript:return toblog(" + opid + ");");
                btHeaderOp.Attributes.Add("onclick", "javascript:return toblog(" + opid + ");");
                lbHeaderReplyNum.Text = replynum.ToString();

                int footerindex = list.Controls.Count - 1;
                ImageButton btFooterImg = (ImageButton)list.Controls[footerindex].FindControl("btFooterImg");
                Label lbFooterSub = (Label)list.Controls[footerindex].FindControl("lbFooterSub");
                LinkButton btFooterOp = (LinkButton)list.Controls[footerindex].FindControl("btFooterOp");
                Label lbFooterCDate = (Label)list.Controls[footerindex].FindControl("lbFooterCDate");
                Label lbFooterCon = (Label)list.Controls[footerindex].FindControl("lbFooterCon");

                btFooterImg.ImageUrl = ((ImageButton)list.Items[replynum - 1].FindControl("btImg")).ImageUrl;
                lbFooterSub.Text = ((Label)list.Items[replynum - 1].FindControl("lbSub")).Text;
                btFooterOp.Text = ((LinkButton)list.Items[replynum - 1].FindControl("btOp")).Text;
                lbFooterCDate.Text = ((Label)list.Items[replynum - 1].FindControl("lbCDate")).Text;
                lbFooterCon.Text = ((Label)list.Items[replynum - 1].FindControl("lbCon")).Text;
                opid = ((Label)list.Items[replynum - 1].FindControl("lbOpId")).Text;
                btFooterImg.Attributes.Add("onclick", "javascript:return toblog(" + opid + ");");
                btFooterOp.Attributes.Add("onclick", "javascript:return toblog(" + opid + ");");

                list.ItemStyle.CssClass = "displaynone";
                HtmlGenericControl div = (HtmlGenericControl)e.Item.FindControl("divReply");
                div.Visible = false;
            }
        }
        protected void dltCaxaMsg_ItemCommand(object source, DataListCommandEventArgs e)
        {
            if (e.CommandName == "Reply")
            {
                LinkButton btDisReply = (LinkButton)e.Item.FindControl("btDisReply");
                if (Session["OpId"] == null)
                {
                    string url = HttpContext.Current.Request.Url.PathAndQuery;
                    SysOp.AddCaxaUrl(url);
                    System.Web.UI.ScriptManager.RegisterStartupScript(btDisReply, this.GetType(), "test", "alert('对不起,您还没有登录,请登录后再回复!');window.location.href ='../CaxaZy/register.aspx?flag=1&type=3';", true);
                    return;
                }
                string filepath = "";
                TextBox txtReply = (TextBox)e.Item.FindControl("txtReply");
                string msgcon = txtReply.Text.Trim();
                if (String.IsNullOrEmpty(msgcon))
                {
                    return;
                }
                if (msgcon.Length > 256)
                {
                    CaxaTool.AjaxAlertShow(this.Page, "意见反馈内容文字不能超过256个字,请重新输入!");
                    return;
                }
                int opid = Convert.ToInt32(Session["OpId"]);
                int msgid = Convert.ToInt32(((Label)e.Item.FindControl("lbMsgId")).Text);
                CaxaMsg.AddCaxaMsg(opid, "", msgcon, filepath, msgid);
                DataList list = (DataList)e.Item.FindControl("dltChildCaxaMsg");
                list.ShowHeader = false;
                list.ShowFooter = false;
                list.ItemStyle.CssClass = "displayblock";
                BindCaxaMsgByMsgId(list, msgid);
                txtReply.Text = "";
                Label lbReplyNum = (Label)e.Item.FindControl("lbReplyNum");
                lbReplyNum.Text = list.Items.Count.ToString();
                HtmlTable tb = (HtmlTable)e.Item.FindControl("tbReply");
                tb.Attributes.CssStyle.Value = "display:block";
                btDisReply.Text = "收起回复";
                HtmlGenericControl div = (HtmlGenericControl)e.Item.FindControl("divReply");
                div.Visible = true;
            }
        }


        protected void dltChildCaxaMsg_ItemDataBound(object sender, DataListItemEventArgs e)
        {
            if (e.Item.ItemIndex < 0)
                return;
            //ImageButton btImg = (ImageButton)e.Item.FindControl("btImg");
            //if (btImg.ImageUrl == "")
            //    btImg.ImageUrl = "Image/pic3.jpg";

            string sex = ((Label)e.Item.FindControl("lbSex")).Text;
            ImageButton btImg = (ImageButton)e.Item.FindControl("btImg");
            if (btImg.ImageUrl == "")
            {
                if (sex == "0")
                    btImg.ImageUrl = "Image/man.png";
                else
                    btImg.ImageUrl = "Image/woman.png";
            }
            string opid = ((Label)e.Item.FindControl("lbOpId")).Text;
            LinkButton btOp = (LinkButton)e.Item.FindControl("btOp");
            btImg.Attributes.Add("onclick", "javascript:return toblog(" + opid + ");");
            btOp.Attributes.Add("onclick", "javascript:return toblog(" + opid + ");");
        }
        protected void dltChildCaxaMsg_ItemCommand(object source, DataListCommandEventArgs e)
        {
            if (e.CommandName == "DisAll")
            {
                DataList list = (DataList)e.Item.Parent;
                list.ShowHeader = false;
                list.ShowFooter = false;
                list.ItemStyle.CssClass = "displayblock";
                HtmlGenericControl div = (HtmlGenericControl)e.Item.Parent.Parent.FindControl("divReply");
                //LinkButton btDisReply = (LinkButton)e.Item.Parent.Parent.FindControl("btDisReply");
                //btDisReply.Visible = true;
                //btDisReply.Text = "收起回复";
                div.Visible = true;
            }
        }