Need to stop editing another row in a Gridview, ReorderList etc when another row is already being ed

  • Thread starter Thread starter Andrew Jocelyn
  • Start date Start date
A

Andrew Jocelyn

Hi

I actually want to do this with an AJAX Toolkit ReorderList but I think it
would work the same with a GridView or other databound list control. Is
there a tried and tested way of stoping a user when they attempt to edit a
row when another row is already being edited?

I thought I could use a CustomValidator added to each row but without it's
ControlToValidate property set and do something in the ServerValidate event.
I want to do the validation server side for my application (JavaScript would
be nice too but not essential). I haven't found a very neat way of doing
this yet so any ideas, examples would be appreciated.

Many thanks
Andrew
 
Hi Andrew,
I actually want to do this with an AJAX Toolkit ReorderList but I think it
would work the same with a GridView or other databound list control. Is
there a tried and tested way of stoping a user when they attempt to edit a
row when another row is already being edited?

To do this one option is to add a hidden input field in the HTML. If the
control is in edit mode, set its value to a specific value. When user click
the "Edit" button, check the value of this hidden field. If it shows the
control is in edit mode, stop postback.

The following code shows how to do that. I use GridView here.

aspx:

<script type="text/javascript">
function Check() {
if (document.getElementById("input1").value == "1") {
return false;}
}
</script>

<input id="input1" runat="server"/>
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="True"
DataKeyNames="CustomerID" DataSourceID="SqlDataSource1"
EmptyDataText="There are no data records to display."
onprerender="GridView1_PreRender">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton OnClientClick="return Check()"
ID="LinkButton1" runat="server" CommandName="Edit">Edit</asp:LinkButton>
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton ID="LinkButton3" runat="server"
CommandName="Update">Update</asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server"
CommandName="Cancel">Cancel</asp:LinkButton>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

aspx.cs:
protected void GridView1_PreRender(object sender, EventArgs e)
{
if (GridView1.EditIndex != -1)
{
this.input1.Value = "1";
}
else
{
this.input1.Value = "0";
}
}

Please test it to see if it works. If you have additional questions please
feel free to ask.

Regards,
Allen Chen
Microsoft Online Support

Delighting our customers is our #1 priority. We welcome your comments and
suggestions about how we can improve the support we provide to you. Please
feel free to let my manager know what you think of the level of service
provided. You can send feedback directly to my manager at:
(e-mail address removed).

==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/en-us/subscriptions/aa948868.aspx#notifications.

Note: MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 2 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions. Issues of this
nature are best handled working with a dedicated Microsoft Support Engineer
by contacting Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/en-us/subscriptions/aa948874.aspx
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
 
Hi Andrew,

Have you tried my code? Is it what you need?

Regards,
Allen Chen
Microsoft Online Support,
 
Back
Top