Jaghar följande kod i code behind: Jag löste det så här:GridView, CollapseblePanel mm
<code>
protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e)
{
int myBlogItem = int.Parse(e.CommandArgument.ToString());
//GridView grdComments = (GridView)e.Row.FindControl("grdComments");
GridView grdComments = (GridView)GridView2.FindControl("grdComments");
BlogComments blogCom = new BlogComments();
BlogCommentsDB blogComDB = new BlogCommentsDB();
grdComments.DataSource = blogComDB.GetBlogComments(6); // Här blir det fel...
//grdComments.DataBind();
lblreadError.Text = myBlogItem.ToString();
}
</code>
Jag får felet att objektet inte är en instans av objektet eller nåt sånt, det är ju att jag inte har tilldelat det nåt värde. Det är raden "grdComments.DataSource = blogComDB.GetBlogComments(6);" som blir fel, men egentligen är det väl här(GridView grdComments = (GridView)GridView2.FindControl("grdComments");) felet blir? Min html ser ut så här:
<code>
<asp:GridView ID="GridView2" runat="server" Width="430px" DataSourceID="sqlGetBlogItem"
DataKeyNames="blogItemID" ShowHeader="false" GridLines="None" AutoGenerateColumns="false"
OnRowCommand="GridView2_RowCommand">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<table style="width: 430px">
<tr>
<td>
<h1>
<%#Eval("blogItemHeader") %></h1>
</td>
</tr>
<tr>
<td style="text-align: right;">
<span class="boldText">
<%#Eval("blogItemDate") %></span>
</td>
</tr>
<tr>
<td style="border-bottom: 1px solid #999999;">
<%#Eval("blogItemText") %>
</td>
</tr>
<tr>
<td style="border-bottom: 1px solid #999999">
<asp:LinkButton ID="LinkButton1" runat="server" CommandArgument='<%#Eval("blogItemID") %>'
CommandName="Select">Visa kommentarer(<%#Eval("numberOfComments")%>), skriv kommentar</asp:LinkButton>
</td>
</tr>
<tr>
<td>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<Triggers><asp:AsyncPostBackTrigger ControlID="LinkButton1" /></Triggers>
<ContentTemplate>
<%-- <cc1:ModalPopupExtender ID="mod1" OkControlID="btnFinish" runat="server" TargetControlID="LinkButton1" PopupControlID="pnlComment" />--%>
<asp:Panel ID="pnlComment" runat="server" CssClass="no">
<div style="border-bottom: 1px dotted #999999">
<table>
<tr>
<td colspan="2">
<FTB:FreeTextBox ID="txtBlogCommentText" runat="Server" Width="420px" Height="100px"
Language="sv-SE" />
<%--<FCKeditorV2:FCKeditor ID="txtBody" runat="server" BasePath="~/FCKeditor/" Width="420px">
</FCKeditorV2:FCKeditor>--%>
</td>
</tr>
<tr>
<td>
Ditt namn:
</td>
<td>
<asp:TextBox ID="txtName" runat="server" />
</td>
</tr>
<tr>
<td>
<asp:Button ID="btnAddComment" runat="server" Text="Lägg till kommentar" OnClick="btnAddComment_Click" />
</td>
</tr>
<tr>
<td>
<asp:Label ID="lblCommentError" runat="server" />
<asp:GridView ID="grdComments" DataSourceID="sqlGetBlogComments" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<%#Eval("blogCommentText") %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</td>
</tr>
</table>
</div>
</asp:Panel>
<cc1:CollapsiblePanelExtender ID="CollapsiblePanelExtender2" runat="server" TargetControlID="pnlComment"
ExpandControlID="LinkButton1" CollapseControlID="LinkButton1" Collapsed="true"
ExpandedText="(Göm kommentarer...)" TextLabelID="LinkButton1" CollapsedText="(Visa kommentarer...)" />
</ContentTemplate>
</asp:UpdatePanel>
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</code>
Vad jagvill är alltså att collapseblepanel ska aktiverasnär man klickar på länken och då ska även anropet till dn ske.Sv: GridView, CollapseblePanel mm
<code>
<asp:GridView ID="GridView2" runat="server" Width="430px" DataSourceID="sqlGetBlogItem"
DataKeyNames="blogItemID" ShowHeader="false" GridLines="None" AutoGenerateColumns="false"
OnRowDataBound="GridView2_RowCommand">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<table style="width: 430px">
<tr>
<td>
<h1>
<%#Eval("blogItemHeader") %></h1>
</td>
</tr>
<tr>
<td style="text-align: right;">
<span class="boldText">
<%#Eval("blogItemDate") %></span>
</td>
</tr>
<tr>
<td style="border-bottom: 1px solid #999999;">
<%#Eval("blogItemText") %>
</td>
</tr>
<tr>
<td style="border-bottom: 1px solid #999999">
<asp:LinkButton ID="LinkButton1" runat="server" CommandArgument='<%#Eval("blogItemID") %>'
CommandName="Select">Visa kommentarer(<%#Eval("numberOfComments")%>), skriv kommentar</asp:LinkButton>
</td>
</tr>
<tr>
<td>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<Triggers><asp:AsyncPostBackTrigger ControlID="LinkButton1" /></Triggers>
<ContentTemplate>
<%-- <cc1:ModalPopupExtender ID="mod1" OkControlID="btnFinish" runat="server" TargetControlID="LinkButton1" PopupControlID="pnlComment" />--%>
<asp:Panel ID="pnlComment" runat="server" CssClass="no">
<div style="border-bottom: 1px dotted #999999">
<table>
<tr>
<td colspan="2">
<FTB:FreeTextBox ID="txtBlogCommentText" runat="Server" Width="420px" Height="200px"
Language="sv-SE" />
<%--<FCKeditorV2:FCKeditor ID="txtBody" runat="server" BasePath="~/FCKeditor/" Width="420px">
</FCKeditorV2:FCKeditor>--%>
</tr>
<tr>
<td>
Ditt namn:
</td>
<td>
<asp:TextBox ID="txtName" runat="server" />
</td>
</tr>
<tr>
<td>
<asp:Button ID="btnAddComment" runat="server" CommandArgument='<%#Eval("blogItemID") %>' Text="Lägg till kommentar" OnClick="btnAddComment_Click" />
<asp:Label ID="lblCommentError" runat="server" />
</td>
</tr>
</table>
<table style="margin-top:20px;">
<tr>
<td style="margin-top:30px;">
<asp:GridView ID="grdComments"
DataSourceID="sqlGetBlogComments"
runat="server"
AutoGenerateColumns="false"
ShowHeader="false"
GridLines="None" Width="400px">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<table style="width:100%">
<tr>
<td><%#Eval("blogCommentText") %></td>
</tr>
<tr style="text-align:right;">
<td style="border-bottom:1px solid #999999; text-align:right;"><%#Eval("blogCommentAuthor") %>, <%#Eval("blogCommentDate") %></td>
</tr>
</table> </ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</td>
</tr>
</table>
</div>
</asp:Panel>
<cc1:CollapsiblePanelExtender ID="CollapsiblePanelExtender2" runat="server" TargetControlID="pnlComment"
ExpandControlID="LinkButton1" CollapseControlID="LinkButton1" Collapsed="true"
ExpandedText="(Göm kommentarer...)" TextLabelID="LinkButton1" CollapsedText="(Visa kommentarer...)" />
<asp:SqlDataSource ID="sqlGetBlogComments" runat="server"
ConnectionString="<%$ ConnectionStrings:con %>" SelectCommand="getBlogCommentsByID"
SelectCommandType="StoredProcedure" OnSelected="sqlGetBlogItem_Selected">
<SelectParameters>
<asp:Parameter Name="blogItemID" />
</SelectParameters>
</asp:SqlDataSource>
</ContentTemplate>
</asp:UpdatePanel>
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
//.cs
protected void btnAddComment_Click(object sender, EventArgs e)
{
BlogComments com = new BlogComments();
com.BlogCommentAuthor = txtName.Text;
com.BlogCommentText = txtBlogCommentText.Text;
com.BlogItemID = (int)GridView2.SelectedDataKey[0];
com.BlogID = int.Parse(Request.QueryString["blogID"].ToString());
BlogCommentsDB blogDB = new BlogCommentsDB();
blogDB.AddBlogComment(com);
grdComments.DataBind();
}
protected void GridView2_RowCommand(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
int categoryId = (int)DataBinder.Eval(e.Row.DataItem, "blogItemID");
SqlDataSource srcMovies = (SqlDataSource)e.Row.FindControl("sqlGetBlogItem");
sqlGetBlogComments.SelectParameters["blogItemID"].DefaultValue = categoryId.ToString();
}
}
</code>
Så fungerar det, med ett par undantag. IFF får jag följande fel när jag lägger till en kommentar "Objektreferensen har inte angetts till en instans av ett objekt." och det är på denna rad "Rad 47: com.BlogItemID = (int)GridView2.SelectedDataKey[0]". Det fungerar i IE om jag tar bort FreeTextbox ochanvänder vanlig textbox, men jag funderade på nu när jag skriver inlägget att det borde ju gå att lägga koden för insättning i databasen i samma metod som det andra bara att använda olika commandname. Det andra problemet är med FreeTextbox, den går inte att skriva i i IE om jag inte uppdaterar sidan efter jag har klickat på länken för att "rulla ner" collapsepanel. I FF funkar det.
Nån som vet hur man konfigurerar FCKeditor?Jaghar försökt fixa till menyn, men får bara meddelandet att den inte finns. har även gjort omde två som följer med men de ändrar sej inte på sidan.