[QGIS-Developer] reload attribute table does not work for attribute changed by dataProvider

Thomas Baumann rdbath.regiodata at gmail.com
Thu Jun 14 05:11:30 PDT 2018


Hello,
isnt it "QgsEditError" instead of "QgsEditException"?

regards,
Thomas


Am Do., 14. Juni 2018 um 03:26 Uhr schrieb Zhang Qun <zhangq.rhy at gmail.com>:

> Hi Matthias
>
> I follow the steps in the link you posted and get the following errors
> when trying to import
>
> ImportError: cannot import name QgsEditException
>
> Do I have to install some modules? Didn't find any luck on google.
>
> Best regards,
> Zhang Qun
>
> On Wed, Jun 13, 2018 at 6:16 PM, Matthias Kuhn <matthias at opengis.ch>
> wrote:
>
>> Glad you like it :)
>>
>> Forwading this answer also to the mailing list for future reference,
>> Ethan, you need to use "reply to all" in your mail application or other
>> are not able to follow our conversation (which would be a pity ;) ).
>>
>> Best regards
>> Matthias
>>
>> On 06/13/2018 12:13 PM, Zhang Qun wrote:
>> > Wow, i was about to look into the with() statement. It looks much
>> > better.  Many thanks for the link.
>> >
>> > Regards,
>> > Ethan
>> >
>> >
>> > On Wed, Jun 13, 2018, 6:03 PM Matthias Kuhn <matthias at opengis.ch
>> > <mailto:matthias at opengis.ch>> wrote:
>> >
>> >     Hi Ethan,
>> >
>> >     there are of course advantages and disadvantages of both methods,
>> but in
>> >     most cases the QgsVectorLayer ones just "do the right thing",
>> especially
>> >     when used with a `with` block, see also this post:
>> >
>> >     http://www.opengis.ch/2015/08/12/with-edit-layer/
>> >
>> >     Cheers
>> >     Matthias
>> >
>> >     On 06/13/2018 11:59 AM, Zhang Qun wrote:
>> >     > Hi Matthias,
>> >     >
>> >     > Thanks very much for the instruction. I will try it out. The
>> >     > dataProvider method seems simpler to me and it can set attributes
>> in
>> >     > batch as it takes a list as input. The layer method seems only
>> >     takes one
>> >     > input. If i want to change 10 attributes of a feature, i have to
>> issue
>> >     > 10 commands.
>> >     >
>> >     > Best regards,
>> >     > Ethan
>> >     >
>> >     >
>> >     > On Wed, Jun 13, 2018, 5:45 PM Matthias Kuhn <matthias at opengis.ch
>> >     <mailto:matthias at opengis.ch>
>> >     > <mailto:matthias at opengis.ch <mailto:matthias at opengis.ch>>> wrote:
>> >     >
>> >     >     Hi Ethan
>> >     >
>> >     >     On 06/13/2018 11:18 AM, Zhang Qun wrote:
>> >     >     > Hi everyone, i"m using QGIS2.18, and trying to change
>> feature
>> >     >     attributes
>> >     >     > using the following two methods:
>> >     >     >
>> >     >     > *dataProvider:*
>> >     >     >
>> >     >     > |attrs
>> >     >
>>  ={0:"hello",1:123}layer.dataProvider().changeAttributeValues({fid
>> >     >     > :attrs })|
>> >     >     >
>> >     >     > *layer object:*
>> >     >     >
>> >     >     >
>> >     >
>> >
>>   |layer.startEditing()layer.changeAttributeValue(fid,fieldIndex,value)layer.commitChanges()|
>> >     >     >
>> >     >     > I keep the attribute table open, and monitor the changes.
>> >     The first
>> >     >     > method dataProvider is not able to update the attribute
>> >     table on the
>> >     >     > fly, even the "reload table" button on the top menu of the
>> >     table does
>> >     >     > not work. I have to re-open the table to see the changes.
>> >     The second
>> >     >     > method is working, the attribute table gets instantly
>> updated.
>> >     >     >
>> >     >     > I would like to stay with the dataProvider method but not
>> >     sure how to
>> >     >     > get instantly updated attribute table?
>> >     >
>> >     >     The provider's dataChanged() signal needs to be emitted, I
>> >     think you can
>> >     >     directly emit that or call `dataProvider().forceReload()`.
>> >     >
>> >     >     Out of curiosity, why would you like to stay with the
>> >     dataProvider
>> >     >     method?
>> >     >
>> >     >     Bests
>> >     >     Matthias
>> >     >
>> >     >
>> >     >     >
>> >     >     > Thanks.
>> >     >     >
>> >     >     > Best regards,
>> >     >     > Ethan
>> >     >     >
>> >     >     >
>> >     >     > _______________________________________________
>> >     >     > QGIS-Developer mailing list
>> >     >     > QGIS-Developer at lists.osgeo.org
>> >     <mailto:QGIS-Developer at lists.osgeo.org>
>> >     <mailto:QGIS-Developer at lists.osgeo.org
>> >     <mailto:QGIS-Developer at lists.osgeo.org>>
>> >     >     > List info:
>> >     https://lists.osgeo.org/mailman/listinfo/qgis-developer
>> >     >     > Unsubscribe:
>> >     https://lists.osgeo.org/mailman/listinfo/qgis-developer
>> >     >     >
>> >     >     _______________________________________________
>> >     >     QGIS-Developer mailing list
>> >     >     QGIS-Developer at lists.osgeo.org
>> >     <mailto:QGIS-Developer at lists.osgeo.org>
>> >     <mailto:QGIS-Developer at lists.osgeo.org
>> >     <mailto:QGIS-Developer at lists.osgeo.org>>
>> >     >     List info:
>> https://lists.osgeo.org/mailman/listinfo/qgis-developer
>> >     >     Unsubscribe:
>> >     https://lists.osgeo.org/mailman/listinfo/qgis-developer
>> >     >
>> >
>>
>
> _______________________________________________
> QGIS-Developer mailing list
> QGIS-Developer at lists.osgeo.org
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20180614/83d196b7/attachment-0001.html>


More information about the QGIS-Developer mailing list