PDA

View Full Version : با کلیک کردن روی یک دکمه در گریدویو ، رنگ اون سطر عوض بشه.



omid6630
شنبه 04 تیر 1390, 18:21 عصر
سلام و خسته نباشید ...


میخوام ، با کلیک کردن روی یک دکمه در گریدویو ، رنگ اون سطر عوض بشه .

این کار رو برای تائید نظرات سایت میخوام انجام بدم . مثلا نظراتی رو که خونده شده و تایید شده ، به رنگ خاکستری تبدیل بشن .

پبشاپیش متشکرم

mehdi.mousavi
شنبه 04 تیر 1390, 18:56 عصر
سلام.
اینکارو می تونید هم در سمت Server انجام بدید و هم در سمت Client:


در روش اول، (سمت سرور)، می تونید دکمه ای داشته باشید که CommandName اونو Select بذارید. سپس در SelectedIndexChanged و با استفاده از SelectedIndex Property، به اندیس انتخاب شده برسید و سمت سرور، CSS Class اون Row رو Set کنید.
در روش دوم، می تونید با کلیک روی هر Row، بسادگی CSS Class ای به اون Row تخصیص بدید.

طبیعتا در CSS مربوطه، کلاس مزبور background property ی اون کلاس رو به نحوی تعیین کرده اید که رنگ مورد نظر شما نمایش داده بشه.

موفق باشید.

omid6630
شنبه 04 تیر 1390, 19:12 عصر
سلام.
اینکارو می تونید هم در سمت Server انجام بدید و هم در سمت Client:



در روش اول، (سمت سرور)، می تونید دکمه ای داشته باشید که CommandName اونو Select بذارید. سپس در SelectedIndexChanged و با استفاده از SelectedIndex Property، به اندیس انتخاب شده برسید و سمت سرور، CSS Class اون Row رو Set کنید.
در روش دوم، می تونید با کلیک روی هر Row، بسادگی CSS Class ای به اون Row تخصیص بدید.


طبیعتا در CSS مربوطه، کلاس مزبور background property ی اون کلاس رو به نحوی تعیین کرده اید که رنگ مورد نظر شما نمایش داده بشه.

موفق باشید.

تشکر از راهنمایی شما .

فقط "


سپس در SelectedIndexChanged و با استفاده از SelectedIndex Property، به اندیس انتخاب شده برسید .

"
این تیکه رو بیشتر توضیح بدین ممنون میشم

mehdi.mousavi
شنبه 04 تیر 1390, 19:19 عصر
سلام.
منظورم این بود:

protected void gridView_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.gridView.SelectedIndex > -1)
{
GridViewRow row = this.gridView.Rows[this.gridView.SelectedIndex];
row.CssClass = "selected";
}
}


سپس در فایل CSS، اون selected رو تعریف کنید...

موفق باشید.

omid6630
شنبه 04 تیر 1390, 19:52 عصر
سلام.
منظورم این بود:

protected void gridView_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.gridView.SelectedIndex > -1)
{
GridViewRow row = this.gridView.Rows[this.gridView.SelectedIndex];
row.CssClass = "selected";
}
}


سپس در فایل CSS، اون selected رو تعریف کنید...

موفق باشید.

این خطا رو میده ....

Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.

از صبر رو بردباری شما متشکرم

mehdi.mousavi
شنبه 04 تیر 1390, 22:50 عصر
سلام.
لطفا تنها همون بخشی از کد رو که GridView رو در اون تعریف کرده اید و احتمالا اونو به DataSource مورد نظرتون Bind کرده اید رو اینجا قرار بدید تا ببینم ایراد چیه.

موفق باشید.

omid6630
یک شنبه 05 تیر 1390, 11:36 صبح
protected void Page_Load(object sender, EventArgs e)
{
if (Page.User.Identity.IsAuthenticated)
{
if (Roles.IsUserInRole("Admin"))
{
bindgrid();
}
}
}



public void bindgrid()
{
string summselect = "select * from Summary";

DataSet dssummary = sqlh.ExecuteDataSet(summselect);

gridsummary.DataSource = dssummary.Tables[0].DefaultView;
gridsummary.DataBind();

protected void gridsummary_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.gridsummary.SelectedIndex > -1)
{
GridViewRow row = this.gridsummary.Rows[this.gridsummary.SelectedIndex];
row.CssClass = "selected";
}
}

mehdi.mousavi
یک شنبه 05 تیر 1390, 13:17 عصر
سلام.
بسیار خوب، لطفا کد ASPX رو هم اینجا بذارید تا ببینم Command مربوطه رو چطوری تعریف کرده اید.
احتمالا ایراد در Set کردن CommandArgument یا چنین چیزی هستش...

موفق باشید.

omid6630
یک شنبه 05 تیر 1390, 13:25 عصر
حاجی ، خیلی باحالی !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!:چشمک:



<td class="style113" style="vertical-align: top; text-align: center; font-family: tahoma; font-size: 12px; width: 100%;">
<br />
<asp:GridView ID="gridsummary" runat="server" AllowPaging="True"
AutoGenerateColumns="False" BackColor="White"
BorderColor="#CC9966" CellPadding="4" DataKeyNames="ID"
HorizontalAlign="Center" EnableModelValidation="True"

onselectedindexchanged="gridsummary_SelectedIndexChanged">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server"
CommandArgument='<%# Eval("ID") %>' CommandName="remove">حذف</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="LinkButton2" runat="server" CommandArgument='<%Eval("ID") %>' CommandName="apply">تایید</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Button1" runat="server" Text="Button" CommandName="Select"/>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="ID" HeaderText="ردیف" InsertVisible="False"
ReadOnly="True" SortExpression="ID" />
<asp:BoundField DataField="SName" HeaderText="نام مشتری"
SortExpression="SName" ></asp:BoundField>
<asp:BoundField DataField="Email" HeaderText="ایمیل مشتری"
SortExpression="Email" ></asp:BoundField>
<asp:BoundField DataField="Topic" HeaderText="موضوع"
SortExpression="Topic" ></asp:BoundField>
<asp:BoundField DataField="Summary" HeaderText="متن نظر"
SortExpression="Summary" />
</Columns>
<FooterStyle BackColor="#FFFFCC" ForeColor="#330099" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="#FFFFCC"
Font-Underline="False" />
<PagerStyle BackColor="#FFFFCC" ForeColor="#330099" HorizontalAlign="Center"
VerticalAlign="Bottom" />
<RowStyle BackColor="White" ForeColor="Black" HorizontalAlign="Center"
VerticalAlign="Middle" Wrap="True" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="#999966" />
</asp:GridView>
<br />
</td>

mehdi.mousavi
یک شنبه 05 تیر 1390, 13:35 عصر
سلام.
ایراد از این خط هستش:

<asp:LinkButton ID="LinkButton2" runat="server" CommandArgument='<%Eval("ID") %>' CommandName="apply">تایید</asp:LinkButton>

اونجاییکه نوشته اید Eval یادتون رفته علامت # رو قبل از عبارت Eval بذارید.

موفق باشید.

omid6630
یک شنبه 05 تیر 1390, 15:52 عصر
سلام.
ایراد از این خط هستش:

<asp:LinkButton ID="LinkButton2" runat="server" CommandArgument='<%Eval("ID") %>' CommandName="apply">تایید</asp:LinkButton>

اونجاییکه نوشته اید Eval یادتون رفته علامت # رو قبل از عبارت Eval بذارید.



موفق باشید.


هنوز این پیغام رو میده

Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.

omid6630
دوشنبه 06 تیر 1390, 10:09 صبح
آقای موسوی متشکرم .... اما اگر این حل بشه ، خیلی کارم جلو می افته .


<asp:GridView ID="gridsummary" runat="server" AllowPaging="True"
AutoGenerateColumns="False" BackColor="White"
BorderColor="#CC9966" CellPadding="4" DataKeyNames="ID"
HorizontalAlign="Center" EnableModelValidation="True"

onselectedindexchanged="gridsummary_SelectedIndexChanged">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Button1" runat="server" Text="Button" CommandName="Select"
CommandArgument='<%# Eval("ID") %>'/>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="ID" HeaderText="ردیف" InsertVisible="False"
ReadOnly="True" SortExpression="ID" />
<asp:BoundField DataField="SName" HeaderText="نام مشتری"
SortExpression="SName" ></asp:BoundField>
<asp:BoundField DataField="Email" HeaderText="ایمیل مشتری"
SortExpression="Email" ></asp:BoundField>
<asp:BoundField DataField="Topic" HeaderText="موضوع"
SortExpression="Topic" ></asp:BoundField>
<asp:BoundField DataField="Summary" HeaderText="متن نظر"
SortExpression="Summary" />
</Columns>
<FooterStyle BackColor="#FFFFCC" ForeColor="#330099" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="#FFFFCC"
Font-Underline="False" />
<PagerStyle BackColor="#FFFFCC" ForeColor="#330099" HorizontalAlign="Center"
VerticalAlign="Bottom" />
<RowStyle BackColor="White" ForeColor="Black" HorizontalAlign="Center"
VerticalAlign="Middle" Wrap="True" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="#999966" />
</asp:GridView>



protected void gridsummary_SelectedIndexChanged(object sender, EventArgs e)
{

if (this.gridsummary.SelectedIndex > -1)
{
GridViewRow row = this.gridsummary.Rows[this.gridsummary.SelectedIndex];
row.CssClass = "selected";
}
}


باید کردن هم مثل قبلی است

mehdi.mousavi
دوشنبه 06 تیر 1390, 11:02 صبح
سلام.
فیلدهای جدولتون، حاوی HTML هستش؟ منظورم اینه که مثلا در فیلدهای Summary، Title و ... در بانک، آیا HTML ذخیره کرده اید؟
کد JavaScript ای دارید که متغیرهای فرم رو هنگام Submit دستکاری کنه؟ می تونم کد Page_Load صفحه رو ببینم؟

موفق باشید.

omid6630
سه شنبه 07 تیر 1390, 01:03 صبح
با سلام و خسته نباشید .


سلام.
فیلدهای جدولتون، حاوی HTML هستش؟ منظورم اینه که مثلا در فیلدهای Summary، Title و ... در بانک، آیا HTML ذخیره کرده اید؟

موفق باشید.


نه ، html ذخیره نمیشه .



کد JavaScript ای دارید که متغیرهای فرم رو هنگام Submit دستکاری کنه؟ می تونم کد Page_Load صفحه رو ببینم؟ protected void Page_Load(object sender, EventArgs e)
{
if (Page.User.Identity.IsAuthenticated)
{
if (Roles.IsUserInRole("Admin"))
{
bindgrid();
}
Response.Redirect("~/Login.aspx?Stause=false");
}


}

mehdi.mousavi
سه شنبه 07 تیر 1390, 10:24 صبح
سلام.
لطفا کد فوق رو به این کد تغییر بدید ببینید مشکل رفع میشه یا خیر:


protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
return;

if (Page.User.Identity.IsAuthenticated)
{
if (Roles.IsUserInRole("Admin"))
{
bindgrid();
}

Response.Redirect("~/Login.aspx?Stause=false");
}
}


موفق باشید.

پاورقی: راستش من از این چند خط کد شما سر در نمیارم... دارید می گید اگر admin بود، بعد Bind کردن GridView بره به Login.aspx؟؟؟ خوب دیگه برای چی GridView رو Bind می کنید؟

Himalaya
سه شنبه 07 تیر 1390, 16:55 عصر
سلام و با اجازه از استاد موسوی
به جای TemplateField یا از خصوصیت AutoGenerateSelectButton=True گرید استفاده کن یا از


<asp:CommandField ShowSelectButton="True" ButtonType="Button" />
یا اگه هنوز اصرار داری از TemplateField به همراه asp:button استفاده کنی خصوصیت UseSubmitBehavior=False مربوط به asp:button رو ست کن
ضمن اینکه خصوصیت CommandArgument رو هم نیاز نداری و ایونت onselectedindexchanged رو هم حذف کن. وقتی سطری اننتخاب بشه، خود گرید استایلی رو که تو بخش SelectedRowStyle تعیین کردید، به سطر انتخاب شده نسبت میده (چه لزومی داشته که از طریق کد نویسی این کار رو انجام دادید؟)